背景
传统的入库任务一般借助于MapReduce或者Spark来写hive表,一般都是天级别最多小时级别的任务。随着实时性要求越来越高,传统的入库不太能满足需求。Flink完全基于流式处理,同时也支持了写Hive表。本文介绍一下如果通过FlinkSQL实现kafka数据入库hive,并能够实时可查。
Hive Catalog
由于写hive表必须基于hive catalog,所以需要注册hive catalog。同时可以在一个job内切换catalog,如果我们不想把kafka的source table注册到hive metastore里面,那么就可以使用memory catalog。
SQL
完整SQL如下
USE CATALOG hive_catalog;
USE mydb;--要写入的hive db
set table.sql-dialect=hive;
DROP TABLE IF EXISTS hive_table;
CREATE EXTERNAL TABLE hive_table (
data_timestamp BIGINT,
a STRING,
b STRING
) PARTITIONED BY (`day` STRING, `hour` STRING) STORED AS PARQUET
TBLPROPERTIES (
--这里支持filesystem connector的所有参数
'parquet.compression'='SNAPPY',--压缩算法
'sink.partition-commit.policy.kind' = 'metastore,su