实现步骤

要实现Hive漂移同步解决方案,请执行以下步骤:

  1. 配置源端和要使用的所有其他处理器。
    • 如果使用JDBC Query Consumer作为源端,请启用JDBC头属性的创建。有关更多信息,请参见漂移同步解决方案的头属性。
    • 如果数据包括带有嵌套字段的记录,请在将记录传递给Hive Metadata处理器之前,添加一个Field Flattener来展平记录。
  2. 要捕获列漂移并启用基于记录的写入,请配置Hive Metadata处理器:
    • 配置连接信息。
    • 配置数据库,表和分区表达式。

      您可以输入一个名称,也可以使用计算得出要使用的名称的表达式。如有必要,可以在管道中的较早位置使用Expression Evaluator,将信息写入记录字段或记录头属性。

    • 配置十进制字段精度和小数位属性名称。

      处理来自JDBC Query Consumer或JDBC Multitable Consumer源的数据时,请使用默认属性名称“precision”和“scale”。这两个源端在每个小数字段的“precision”和“scale”字段属性中存储小数列的精度和小数位数。

      处理来自其他源端的数据时,可以在管道中更早地使用Expression Evaluator处理器为Decimal字段创建precision和scale字段属性。

    • 指定要使用的数据格式,Avro或Parquet。
    • (可选)配置高级选项,例如最大高速缓存大小,时间基准和数据时区。

    有关Hive Metadata处理器的更多信息,请参见Hive Metadata。

  3. 要处理由处理器生成的元数据记录并根据需要更改表,请将Hive Metadata处理器的元数据输出连接到Hive Metastore目标端。
    注意:虽然您可能将某些记录过滤或路由到远离Hive Metastore目标端的位置,但目标端必须接收元数据记录才能更新Hive表。
  4. 配置Hive Metastore目标端:
    • 配置Hive连接信息。
    • (可选)配置缓存信息以及如何更新表。

    有关Hive Metastore目标端的更多信息,请参见Hive Metastore。

  5. 将Hive Metadata处理器的数据输出连接到Hadoop FS或MapR FS目标端,以使用记录头属性将记录写入目标系统。
  6. 配置Hadoop FS或MapR FS目标端:
    1. 要使用targetDirectory头属性写入记录,请在“Output Files”选项卡上,选择“Directory in Header”。
    2. 要基于roll头属性滚动记录,请在“Output Files”选项卡上,选择“Use Roll Attribute”,然后为“Roll Attribute Name”输入“roll”。
    3. 要使用avroSchema头属性写入记录,请在“Data Format”选项卡上,选择Avro数据格式,然后为“Avro Schema Location”属性选择“In Record Header”。

    有关使用记录头属性的更多信息,请参见基于记录的写的记录头属性。

    注意:要压缩Avro数据,请使用“Data Formats”选项卡上的Avro压缩选项,而不要使用“Output Files”选项卡上的压缩编解码器属性。
  7. 处理Parquet数据时,请执行以下附加步骤:
    1. 在数据处理目标的“General”选项卡上,选择“Produce Events”。
    2. 将MapReduce执行程序连接到结果事件流,并为该阶段配置必要的连接信息。
    3. 在MapReduce执行程序的“Jobs”选项卡上,选择“Convert Avro to Parquet”作业类型,然后添加所需的任何其他作业参数。
    4. 在“Avro Conversion”选项卡上,配置“Avro Conversion”属性:
      • 使用默认的Input Avro File表达式 – 这使执行器可以处理刚刚关闭数据处理目标端的文件。
      • 指定要使用的输出目录 – 要将Parquet文件写入.avro临时目录的父目录,请使用以下表达式:
        ${file:parentPath(file:parentPath(record:value('/filepath')))}
      • (可选)配置其他Avro转换属性。
    5. 在“Avro to Parquet”选项卡上,可以选择配置压缩或其他高级Parquet属性。