EMR上运行Hudi DeltaStreamer成功但未同步至AWS Glue数据目录
问题:EMR上Hudi DeltaStreamer无法同步数据至AWS Glue数据目录
操作背景
在EMR集群上运行Hudi DeltaStreamer,已确认S3目标路径s3a://my-bucket/data/my_database/my_target_table/下生成了.hoodie目录及预期的Parquet数据文件。
执行的spark-submit命令
spark-submit \ --conf spark.hadoop.hive.metastore.client.factory.class=com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory \ --deploy-mode cluster \ --jars /usr/lib/spark/external/lib/spark-avro.jar,/usr/lib/hudi/hudi-spark-bundle.jar,/usr/lib/hudi/hudi-utilities-bundle.jar,/usr/lib/hudi/cli/lib/aws-java-sdk-glue-1.12.397.jar,/usr/lib/hive/auxlib/aws-glue-datacatalog-hive3-client.jar,/usr/lib/hadoop/hadoop-aws.jar,/usr/lib/hadoop/hadoop-aws-3.3.3-amzn-2.jar \ --conf spark.sql.catalogImplementation=hive \ --conf spark.sql.catalog.spark_catalog=org.apache.spark.sql.hudi.catalog.HoodieCatalog \ --conf spark.sql.extensions=org.apache.spark.sql.hudi.HoodieSparkSessionExtension \ --class org.apache.hudi.utilities.deltastreamer.HoodieDeltaStreamer /usr/lib/hudi/hudi-utilities-slim-bundle.jar \ --table-type COPY_ON_WRITE \ --source-class org.apache.hudi.utilities.sources.AvroDFSSource \ --source-ordering-field id \ --target-base-path s3a://my-bucket/data/my_database/my_target_table/ \ --sync-tool-classes org.apache.hudi.aws.sync.AwsGlueCatalogSyncTool \ --props file:///etc/hudi/conf/hudi-defaults.conf \ --target-table my_target_table \ --schemaprovider-class org.apache.hudi.utilities.schema.SchemaRegistryProvider \ --enable-sync \ --enable-hive-sync
Hive侧验证结果
通过beeline连接Hive可以正常查看对应数据库和表:
beeline -u jdbc:hive2://ip-1-1-1-1:10000 Connecting to jdbc:hive2://ip-1-1-1-1:10000 show databases; +-----------------------------------+ | database_name | +-----------------------------------+ | my_database | +-----------------------------------+ show tables; +----------------------------------------------------+ | tab_name | +----------------------------------------------------+ | my_target_table | +----------------------------------------------------+
问题与排查情况
- 已按照Hudi官方文档指定
--sync-tool-classes参数为org.apache.hudi.aws.sync.AwsGlueCatalogSyncTool,期望将Hudi表同步至AWS Glue数据目录 - DeltaStreamer任务执行成功且无报错,但Glue数据目录中未出现对应表
- 已修改
/etc/spark/conf/log4j2.properties开启DEBUG日志:
log4j.rootCategory=DEBUG, console
- 查看DEBUG日志后仍未定位到同步失败的原因
内容的提问来源于stack exchange,提问作者Will
相关产品推荐
相关产品推荐

