数据湖探索 DLI-Hive源表:参数说明

时间:2024-12-27 10:34:32

参数说明

请参考使用Hive语法创建OBS表,和Hive 文档了解每个DDL语句的语义。

表1 TBLPROPERTIES 参数说明

参数

是否必选

默认参数

数据类型

说明

streaming-source.enable

false

Boolean

是否启用流源。 注意: 请确保每个分区/文件都应该以原子方式写入,否则读取器可能会得到不完整的数据。

streaming-source.partition.include

all

String

设置分区读取的选项,支持的选项是 'all' 和 'latest'。默认情况下,该选项为 'all' 。

'all' 表示读取所有分区;

'latest'仅在流式处理 Hive 源表用作temporal table时才有效。'latest' 表示按'streaming-source.partition.order'的顺序读取最新的分区。

Flink 支持对最新的 hive 分区进行临时连接,通过启用 'streaming-source.enable',并将 'streaming-source.partition.include' 设置为 'latest'。同时,用户可以通过配置以下分区相关选项来分配分区比较顺序和数据更新间隔。

streaming-source.monitor-interval

None

Duration

连续监视分区/文件的时间间隔。注意:Hive 流式处理读取的默认间隔为'1 min',Hive 流式处理temporal join的默认间隔为 '60 min',这是因为在当前 Hive 流式处理临时连接实现中,每个 TM 都会访问 Hive metaStore,这可能会对 metaStore 产生压力,这将在未来得到改善。

streaming-source.partition-order

partition-name

String

流源的分区顺序,支持 create-time、partition-time 和 partition-name。

create-time 比较分区/文件创建时间,这不是 Hive metaStore 中的分区创建时间,而是文件系统中的文件夹/文件修改时间,如果分区文件夹以某种方式更新,例如将新文件添加到文件夹中,可能会影响数据的使用方式。

partition-time 比较从分区名称中提取的时间。

partition-name 比较分区名称的字母顺序。

对于非分区表,此值应始终为“create-time”。

默认情况下,该值为 partition-name。该选项与已弃用的选项“streaming-source.consume-order”相等。

streaming-source.consume-start-offset

None

String

流式处理消费的起始偏移量。如何解析和比较偏移量取决于您的订单。对于 create-time 和 partition-time,应为时间戳字符串 (yyyy-[m]m-[d]d [hh:mm:ss])。

对于partition-time,将使用分区时间提取器从分区中提取时间。对于 partition-name,是分区名称字符串(例如 pt_year=2020/pt_mon=10/pt_day=01)。

is_lakehouse

Boolean

如果使用hive语法的 DLI Lakehouse表,则需要设置is_lakehouse为true。

  • Source Parallelism Inference

    默认情况下,Flink 会根据文件数量和每个文件中的块数来推断其 Hive 读取器的最佳并行度。

    Flink 支持灵活配置并行推理策略。您可以在 TableConfig 中配置以下参数(请注意,这些参数会影响作业的所有源):

    Key

    Default

    Type

    Description

    table.exec.hive.infer-source-parallelism

    true

    Boolean

    如果为 true,则根据拆分数推断源并行度。如果为 false,则源的并行度由 config 设置。

    table.exec.hive.infer-source-parallelism.max

    1000

    Integer

    设置源运算符的最大推断并行度。

  • Load Partition Splits

    多线程用于拆分 hive 的分区。您可以使用 table.exec.hive.load-partition-splits.thread-num 来配置线程号。默认值为 3,配置的值应大于 0。

    Key

    Default

    Type

    Description

    table.exec.hive.load-partition-splits.thread-num

    3

    Integer

    配置的值应大于0。

    SQL 提示可用于将配置应用于 Hive 表,而无需更改其在 Hive 元存储中的定义。Hints | Apache Flink

  • Vectorized Optimization upon Read

    当满足以下条件时,Flink 会自动对 Hive 表进行矢量化读取:

    • 格式:ORC 或 Parquet。
    • 没有复杂数据类型的列,如配置单元类型:List、Map、Struct、Union。
      默认情况下,此功能处于启用状态。可以使用以下配置禁用它。
      table.exec.hive.fallback-mapred-reader=true
support.huaweicloud.com/sqlref-flink-dli/dli_08_15049.html