使用可选组件功能创建 Dataproc 集群时,可以安装 Hudi 等其他组件。本页面介绍了如何选择性地在 Dataproc 集群上安装 Hudi 组件。
在 Dataproc 集群上安装 Apache Hudi 组件后,它会安装 Hudi 库,并在集群中配置 Spark 和 Hive 以与 Hudi 搭配使用。
兼容的 Dataproc 映像版本
您可以在使用以下 Dataproc 映像版本创建的 Dataproc 集群上安装 Hudi 组件:
与 Hudi 相关的属性
创建具有 Hudi 集群的 Dataproc 时,系统会将以下 Spark 和 Hive 属性配置为与 Hudi 搭配使用。
配置文件 | 属性 | 默认值 |
---|---|---|
/etc/spark/conf/spark-defaults.conf |
spark.serializer |
org.apache.spark.serializer.KryoSerializer |
spark.sql.catalog.spark_catalog |
org.apache.spark.sql.hudi.catalog.HoodieCatalog |
|
spark.sql.extensions |
org.apache.spark.sql.hudi.HoodieSparkSessionExtension |
|
spark.driver.extraClassPath |
/usr/lib/hudi/lib/hudi-sparkspark-version-bundle_scala-version-hudi-version.jar |
|
spark.executor.extraClassPath |
/usr/lib/hudi/lib/hudi-sparkspark-version-bundle_scala-version-hudi-version.jar |
|
/etc/hive/conf/hive-site.xml |
hive.aux.jars.path |
file:///usr/lib/hudi/lib/hudi-hadoop-mr-bundle-version.jar |
安装组件
在创建 Dataproc 集群时安装 Hudi 组件。
Dataproc 映像发布版本页面列出了每个 Dataproc 映像版本中包含的 Hudi 组件版本。
控制台
- 启用组件。
- 在 Google Cloud 控制台中,打开 Dataproc 的创建集群页面。设置集群面板已处于选中状态。
- 在组件部分中执行以下操作:
- 在可选组件下,选择 Hudi 组件。
gcloud 命令
如需创建包含 Hudi 组件的 Dataproc 集群,请将该命令与 --optional-components
标志结合使用。
gcloud dataproc clusters create CLUSTER_NAME \ --region=REGION \ --optional-components=HUDI \ --image-version=DATAPROC_VERSION \ --properties=PROPERTIES
替换以下内容:
- CLUSTER_NAME:必填。新集群的名称。
- REGION:必填。集群区域。
- DATAPROC_IMAGE:可选。您可以使用此可选标志来指定非默认的 Dataproc 映像版本(请参阅默认的 Dataproc 映像版本)。
- PROPERTIES:可选。您可以使用此可选标志来设置 Hudi 组件属性,这些属性是使用
hudi:
文件前缀指定的(示例:properties=hudi:hoodie.datasource.write.table.type=COPY_ON_WRITE
)。- Hudi 组件版本属性:您可以视需要指定
dataproc:hudi.version
属性。注意:Hudi 组件版本由 Dataproc 设置,以便与 Dataproc 集群映像版本兼容。如果您设置此属性,而指定的版本与集群映像不兼容,则集群创建可能会失败。 - Spark 和 Hive 属性:Dataproc 在创建集群时会设置与 Hudi 相关的 Spark 和 Hive 属性。您无需在创建集群或提交作业时进行设置。
- Hudi 组件版本属性:您可以视需要指定
REST API
可通过 Dataproc API 在 clusters.create
请求中使用 SoftwareConfig.Component
来安装 Hudi 组件。
提交作业以读取和写入 Hudi 表
创建包含 Hudi 组件的集群后,您可以提交用于读取和写入 Hudi 表的 Spark 和 Hive 作业。
gcloud CLI
示例:
gcloud dataproc jobs submit pyspark \ --cluster=CLUSTER_NAME \ --region=region \ JOB_FILE \ -- JOB_ARGS
示例 PySpark 作业
以下 PySpark 文件会创建、读取和写入 Hudi 表。
以下 gcloud CLI 命令会将示例 PySpark 文件提交到 Dataproc。
gcloud dataproc jobs submit pyspark \ --cluster=CLUSTER_NAME \ gs://BUCKET_NAME/pyspark_hudi_example.py \ -- TABLE_NAME gs://BUCKET_NAME/TABLE_NAME
使用 Hudi CLI
Hudi CLI 位于 Dataproc 集群主节点上的 /usr/lib/hudi/cli/hudi-cli.sh
。您可以使用 Hudi CLI 查看 Hudi 表架构、提交的作业和统计信息,以及手动执行管理操作,例如安排压缩(请参阅使用 hudi-cli)。
如需启动 Hudi CLI 并连接到 Hudi 表,请执行以下操作:
- 通过 SSH 连接到主节点。
- 运行
/usr/lib/hudi/cli/hudi-cli.sh
。命令提示符会更改为hudi->
。 - 运行
connect --path gs://my-bucket/my-hudi-table
。 - 运行命令,例如
desc
(用于描述表架构)或commits show
(用于显示提交历史记录)。 - 如需停止 CLI 会话,请运行
exit
。