运行 Hudi DeltaStreameron EMR 成功,但未同步到 AWS Glue 数据目录

问题描述 投票:0回答:1

当我在 EMR 上运行 Hudi DeltaStreamer 时,我看到 hudi 文件是在 S3 中创建的(例如,我在 S3 中看到一个

.hoodie/
目录和预期的镶木地板文件。命令看起来像:

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 -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                                    |
+----------------------------------------------------+

自从我通过了

--sync-tool-classes
列出的 here 后,我就期待同步到 AWS Glue 数据目录。然而,没有任何错误并且作业成功完成,但数据未从配置单元同步到数据目录。

我在

/etc/spark/conf/log4j2.properties
中打开了调试日志,但仍然没有看到任何有用的信息说明为什么我的数据没有从我的 EMR 的配置单元同步到 AWS Glue 数据目录。

log4j.rootCategory=DEBUG, console
amazon-emr apache-hudi
1个回答
0
投票

对于我的 EMR 设置,我缺少配置 JSON。将其添加到我的 EMR 后,数据库和表就会出现在我的 AWS 数据目录中。

[
    {
      "Classification": "hive-site",
      "Properties": {
        "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory"
      }
    },
    {
      "Classification": "spark-hive-site",
      "Properties": {
        "hive.metastore.client.factory.class": "com.amazonaws.glue.catalog.metastore.AWSGlueDataCatalogHiveClientFactory"
      }
    }
  ]
© www.soinside.com 2019 - 2024. All rights reserved.