rad*_*rma 5 apache-spark google-cloud-dataproc apache-hudi
我正在尝试从 hudi 读取数据,但出现以下错误
Caused by: java.lang.ClassNotFoundException: Failed to find data source: hudi. Please find packages at http://spark.apache.org/third-party-projects.html
Run Code Online (Sandbox Code Playgroud)
我可以使用以下命令使用我的 jupyter 笔记本从 Hudi 读取数据
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder.config(
"spark.sql.catalogImplementation", "hive"
).config(
"spark.serializer", "org.apache.spark.serializer.KryoSerializer"
).enableHiveSupport().getOrCreate
import org.apache.hudi.DataSourceReadOptions
val hudiIncQueryDF = spark.read.format("hudi").load(
"path"
)
import org.apache.spark.sql.functions._
hudiIncQueryDF.filter(col("column_name")===lit("2022-06-01")).show(10,false)
Run Code Online (Sandbox Code Playgroud)
此 jupyter 笔记本是使用使用以下属性之一创建的集群打开的
--properties spark:spark.jars="gs://rdl-stage-lib/hudi-spark3-bundle_2.12-0.10.0.jar" \
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用同一集群的 Spark-Submit 运行作业时,出现上述错误。我还在我的作业属性中添加了spark.serializer=org.apache.spark.serializer.KryoSerializer。不确定是什么问题。
小智 0
由于您的应用程序依赖于 hudi jar,hudi 本身也有一些依赖项,当您将 maven 包添加到会话中时,spark 将安装 hudi jar 及其依赖项,但在您的情况下,您仅提供来自 GCS 存储桶的 hudi jar 文件。
您可以尝试使用此属性:
--properties spark:spark.jars.packages="org.apache.hudi:hudi-spark3.3-bundle_2.12:0.12.0" \
Run Code Online (Sandbox Code Playgroud)
或者直接从你的笔记本中:
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder.config(
"spark.sql.catalogImplementation", "hive"
).config(
"spark.serializer", "org.apache.spark.serializer.KryoSerializer"
).config(
"spark.sql.catalog.spark_catalog", "org.apache.spark.sql.hudi.catalog.HoodieCatalog"
).config(
"spark.sql.extensions", "org.apache.spark.sql.hudi.HoodieSparkSessionExtension"
).config(
"spark.jars.package", "org.apache.hudi:hudi-spark3.3-bundle_2.12:0.12.0"
).enableHiveSupport().getOrCreate
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2640 次 |
| 最近记录: |