Writing

作者: bigdata张凯翔 | 来源:发表于2021-03-04 14:15 被阅读0次

    Flink支持在批处理和流模式下从Hive写入数据。当作为批处理应用程序运行时,Flink将只在作业完成时才将这些记录写入Hive表。批写既支持追加现有表,也支持重写现有表。

    # ------ INSERT INTO将追加到表或分区上,保持现有数据不变------ 
    Flink SQL> INSERT INTO mytable SELECT 'Tom', 25;
    
    # ------ INSERT OVERWRITE将覆盖表或分区中的任何现有数据------ 
    Flink SQL> INSERT OVERWRITE mytable SELECT 'Tom', 25;
    

    数据也可以插入到特定的分区

    # ------ 插入静态分区------ 
    Flink SQL> INSERT OVERWRITE myparttable PARTITION (my_type='type_1', my_date='2019-08-08') SELECT 'Tom', 25;
    
    # ------ 使用动态分区插入 ------ 
    Flink SQL> INSERT OVERWRITE myparttable SELECT 'Tom', 25, 'type_1', '2019-08-08';
    
    # ------使用静态(my_type)和动态(my_date)分区插入 ------ 
    Flink SQL> INSERT OVERWRITE myparttable PARTITION (my_type='type_1') SELECT 'Tom', 25, '2019-08-08';
    

    流写不断地向Hive添加新数据,以增量的方式提交记录——使其可见。用户通过几个属性控制何时/如何触发提交。流写不支持插入覆盖。
    下面展示了如何使用流接收器写一个流查询,将数据从Kafka写入到Hive表中,并提交分区,然后运行一个批量查询将数据读出来。
    有关可用配置的完整列表,请参阅流接收器。
    https://ci.apache.org/projects/flink/flink-docs-release-1.12/zh/dev/table/connectors/filesystem.html#streaming-sink

    SET table.sql-dialect=hive;
    CREATE TABLE hive_table (
      user_id STRING,
      order_amount DOUBLE
    ) PARTITIONED BY (dt STRING, hr STRING) STORED AS parquet TBLPROPERTIES (
      'partition.time-extractor.timestamp-pattern'='$dt $hr:00:00',
      'sink.partition-commit.trigger'='partition-time',
      'sink.partition-commit.delay'='1 h',
      'sink.partition-commit.policy.kind'='metastore,success-file'
    );
    
    SET table.sql-dialect=default;
    CREATE TABLE kafka_table (
      user_id STRING,
      order_amount DOUBLE,
      log_ts TIMESTAMP(3),
      WATERMARK FOR log_ts AS log_ts - INTERVAL '5' SECOND
    ) WITH (...);
    
    -- streaming sql, insert into hive table
    INSERT INTO TABLE hive_table 
    SELECT user_id, order_amount, DATE_FORMAT(log_ts, 'yyyy-MM-dd'), DATE_FORMAT(log_ts, 'HH')
    FROM kafka_table;
    
    -- batch sql, select with partition pruning
    SELECT * FROM hive_table WHERE dt='2020-05-20' and hr='12';
    

    相关文章

      网友评论

          本文标题:Writing

          本文链接:https://www.haomeiwen.com/subject/izhkqltx.html