iceberg对接flinksql测试

Apache Iceberg对接Flinksql测试

最新更新

https://blog.csdn.net/weixin_49218925/article/details/114833693

Apache Iceberg简介

我们可以简单理解为他是基于计算层(flink , spark)和存储层(orc,parqurt)的一个中间层,
我们在hive建立一个iceberg格式的表。用flink或者spark写入iceberg,然后再通过其他方式来读
取这个表,比如spark,flink,presto等。

○ 在文件Format(parquet/avro/orc等)之上实现Table语义。
	■ 支持定义和变更Schema
	■ 支持Hidden Partition和Partition变更
	■ ACID语义
	■ 历史版本回溯

○ 特点
	■ 借助partition和columns统计信息实现分区裁剪
	■ 不绑定HDFS,可拓展到S3/OSS等 
	■ Serializable Isolation
	■ 容许多个writer并发写入。乐观锁机制解决冲突。

○ iceberg文件目录

在这里插入图片描述

1 环境准备:

1.1 所需组件版本

■ Flink:1.11.1
■ Prestosql:320
■ Hive:2.11
■ Jdk :1.8
■ Hadoop:3.0.0
■ iceberg:0.10.0
■ 所用jar:Iceberg-flink-runtime-a1867ee.dirty.jar(下载源码手动编译的iceberg的0.10.0版本,也可从官网下载)

1.2 flink安装与使用的注意事项:

○ 下载安装包:flink-1.11.1-bin-scala_2.11.tgz
○ 下载jar包:flink-connector-hive_2.11-1.11.2.jar,并放入flink的lib下。
○ 将手动编译的iceberg的Iceberg-flink-runtime-a1867ee.dirty.jar拷贝到flink所在节点。
○ Flink对接hive:拷贝hive-common、hive-exec、hive-metastore、hive-shims-common、libfb303、       libthrift、 guava、servlet-api到flink的lib下。
○ standalone启动flink服务:start-cluster.sh
○ 启动flink sql client:sql-client.sh embedded -j ‘../iceberg-flink-runtime.jar’.

2 flink对接iceberg

2.1 flinksql操作iceberg

2.1.1 创建iceberg的catalog

iceberg的两种catalog创建方式

2.1.2 创建iceberg表 创建iceberg表
2.1.3 flinksql写入数据到iceberg表写入数据
2.1.4 修改表属性修改表属性
2.1.5 flinksql删除表、库和catalog

删除操作

2.1.6 flinksql暂不支持对column的操作,可通过flink api操作。
2.1.7 对于iceberg的查询,也可通过presto、spark查询。
presto的配置iceberg.properties 如下:
	connector.name=iceberg
 	hive.metastore.uri=thrift://元数据IP:9083

2.2 flink api操作iceberg

public class Flink2Iceberg{

	public static void main(String[] args) throws Exception{
		StreamExecutionEnvironment env =
				StreamExecutionEnvironment.getExecutionEnvironment();
		env.setParallelism(1);
		env.enableCheckpointing(10000);
		StreamTableEnvironment tenv = StreamTableEnvironment.create(env);
		tenv.executeSql("CREATE CATALOG iceberg WITH (\n" +
		                "  'type'='iceberg',\n" +
		                "  'catalog-type'='hive'," +
		                "  'hive-conf-dir'='/Users/user/work/hive/conf/'" +
		                ")");

		tenv.useCatalog("iceberg");
		tenv.executeSql("CREATE DATABASE iceberg_db");
		tenv.useDatabase("iceberg_db");

		tenv.executeSql("CREATE TABLE sourceTable (\n" +
		                " userid int,\n" +
		                " f_random_str STRING\n" +
		                ") WITH (\n" +
		                " 'connector' = 'datagen',\n" +
		                " 'rows-per-second'='100',\n" +
		                " 'fields.userid.kind'='random',\n" +
		                " 'fields.userid.min'='1',\n" +
		                " 'fields.userid.max'='100',\n" +
		                "'fields.f_random_str.length'='10'\n" +
		                ")");

		tenv.executeSql(
				"insert into iceberg.iceberg_db.iceberg_001 select * from iceberg.iceberg_db.sourceTable");
	}
}

2.3 这是之前测试的iceberg-0.10.0版本,对于flinksql的支持暂不完善,对于0.11.0版本,功能更加完善些,测试后再发出。欢迎加入iceberg数据湖交流群:在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数据湖填坑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值