Flink Sql on Zeppelin(6)——Hive Streaming

本文介绍了Flink 1.11中Hive Streaming Sink和Source的使用,包括参数解析和实战演示。通过Flink连接Hive,展示了如何创建Hive Streaming Sink和Source,以及在不同模式下的数据读写操作。同时提到了Hive Dim Source的简要说明。
摘要由CSDN通过智能技术生成

概述

  • Flink1.11 在上周二正式release了,在此之前我也给大家分享过了Flink1.11的一些新特性,然后和大家说过这一期会给大家单独说Flink X Hive
  • 本来打算找点数据,然后做一期类似于实时数仓的内容,但是数据不太好找,加上时间、精力有限就简单和大家聊聊吧
  • 在开始之前,大家参考一下Hive Integration,把flink 连接hive所需要的包放到lib目录下

Hive Streaming Sink

  • 先看看官网是怎么描述Hive Streaming Sink的吧
    doc 1

    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';
    
  • 参数给大家稍微解析一下

    • partition.time-extractor.timestamp-pattern:分区时间抽取器,与DDL中的分区字段保持一致
    • sink.partition-commit.trigger:分区触发器类型,需要Source表中定义watermark,当watermark > 提取到的分区时间+sink.partition-commit.delay中定义的时间,那么就将当前分区提交
    • sink.partition-commit.delay:相当于延时时间吧
    • sink.partition-commit.policy.kind:怎么提交,一般提交成功之后,需要通知metastore,这样hive才能读到你最新分区的数据;如果需要合并小文件,也可以自定义Class,通过实现PartitionCommitPolicy接口
  • 说了这么多,光说不干假把式,下面就让我们来试一下Hive Streaming Sink

  • 先搞个Source,让我们来试一下新的connector

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值