Writing

举报
bigdata张凯翔 发表于 2021/03/29 02:21:15 2021/03/29
【摘要】 Flink支持在批处理和流模式下从Hive写入数据。当作为批处理应用程序运行时,Flink将只在作业完成时才将这些记录写入Hive表。批写既支持追加现有表,也支持重写现有表。 # ------ INSERT INTO将追加到表或分区上,保持现有数据不变------ Flink SQL> INSERT INTO mytable SELECT 'Tom', 25; # -...

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';

文章来源: www.jianshu.com,作者:百忍成金的虚竹,版权归原作者所有,如需转载,请联系作者。

原文链接:www.jianshu.com/p/81544f30bb2a

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。