【问题标题】:Spark-Hudi: Save as table to Glue/Hive catalogSpark-Hudi:另存为表到 Glue/Hive 目录
【发布时间】:2021-04-01 08:43:22
【问题描述】:

场景: 使用saveAsTable(data frame writer)方法存储Hudi Spark数据帧,这样Hudi支持的表 org.apache.hudi.hadoop.HoodieParquetInputFormat自动生成输入格式架构。

目前,saveAsTable 可以正常使用(非 Hudi 表),它会生成默认输入格式。 我想使用支持的输入文件格式自动创建 Hudi 表,或者使用某些覆盖版本 saveAsTable 或其他方式保持在 spark 的前提下。

【问题讨论】:

    标签: apache-spark pyspark hive aws-glue apache-hudi


    【解决方案1】:

    Hudi 支持saveAsTable

    您有两个选项可以将 hudi 表与 hive 元存储同步:

    在 spark 中同步

    val hudiOptions = Map[String,String](
    ...
      DataSourceWriteOptions.HIVE_URL_OPT_KEY -> "jdbc:hive2://<thrift server host>:<port>",
      DataSourceWriteOptions.HIVE_SYNC_ENABLED_OPT_KEY -> "true",
      DataSourceWriteOptions.HIVE_DATABASE_OPT_KEY -> "<the database>",
      DataSourceWriteOptions.HIVE_TABLE_OPT_KEY -> "<the table>",
      DataSourceWriteOptions.HIVE_PARTITION_FIELDS_OPT_KEY -> "<the partition field>",
      DataSourceWriteOptions.HIVE_PARTITION_EXTRACTOR_CLASS_OPT_KEY -> classOf[MultiPartKeysValueExtractor].getName
    ...
    )
    // Write the DataFrame as a Hudi dataset
    // it will appear in hive (similar to saveAsTable..)
    test_parquet_partition.write
      .format("org.apache.hudi")
      .option(DataSourceWriteOptions.OPERATION_OPT_KEY, DataSourceWriteOptions.INSERT_OPERATION_OPT_VAL)
      .options(hudiOptions)
      .mode(SaveMode.Overwrite)
      .save(hudiTablePath)
    

    在 spark 外部同步

    在运行 hudi spark 转换后使用 bash 脚本hudi documentation

    cd hudi-hive
    
    ./run_sync_tool.sh  --jdbc-url jdbc:hive2:\/\/hiveserver:10000 --user hive --pass hive --partitioned-by partition --base-path <basePath> --database default --table <tableName>```)
    ```bash
    cd hudi-hive
    
    ./run_sync_tool.sh  --jdbc-url jdbc:hive2:\/\/hiveserver:10000 --user hive --pass hive --partitioned-by partition --base-path <basePath> --database default --table <tableName>```
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-17
      • 1970-01-01
      • 2020-04-28
      • 1970-01-01
      • 2022-08-07
      • 2017-08-24
      相关资源
      最近更新 更多