Iceberg0.11 与 Spark3.0 结合
1.安装编译 Iceberg0.11
此处我下载的是 Iceberg0.11.1 版本需要提前安装 gradle,iceberg 的编译,此处使用的是 gradle5.4.1 版本
编译 Iceberg,github 上下载源码进行编译,此处略过下载过程直接进行编译
2. Iceberg 编译与 SparkSQL 相结合
2.1 上述编译成功后到 spark3 目录下取出我们所需的 jar 包
iceberg-spark3-runtime-0.11.1.jar 为我们所需的插件包
2.2 将插件包放入到 spark 目录下
2.3 修改 spark 相应的配置
模式一:用 hadoop 当元数据在 spark-defaults.confspark.sql.catalog.iceberg=org.apache.iceberg.spark.SparkCatalogspark.sql.catalog.iceberg.type=hadoopmapreduce.output.fileoutputformat.outputdir=/tmpspark.sql.catalog.iceberg.warehouse=hdfs://mycluster/iceberg/warehouse 模式二:元数据共用 hive.metastore 在 spark-defaults.confspark.sql.catalog.hive_iceberg = org.apache.iceberg.spark.SparkCatalogspark.sql.catalog.hive_iceberg.type = hivespark.sql.catalog.hive_iceberg.uri = thrift://node182:9083 模式二:元数据自定义,可以是 S3
下面的例子都是按模式二:元数据共用 hive.metastore 进行。
spark 进行安装完毕,此处不再详述,conf 目录下需要有 hdfs-site.xml,core-site.xml,mared-reduce.xml,hive-site.xml,yarn-site.xml,这里就不多描述了
在 spark-defaults.conf 下加入下面的语句
其中 spark.sql.catalog.iceberg.uri 是参照 hive-site.xml 中配置 spark.sql.catalog.iceberg,其中的 iceberg 为 namespace 的意思命名空间,下面我们创建 database 都要在此命名空间之下。
2.4 启动 Spark
1)启动 Spark 的 thriftserver 服务
2)用 beeline 进行连接
此处连接的端口号从 hive-site.xml 中配置读取
2.5 创建 iceberg 源表
1)创建 database
想看当前 namespace 用下面命令
2)创建 iceberg 源的表
可以修改底层 file_format,此处默认为 parquet,但是我想修改为 orc,两种方法:方法一:
方法二:
3)插入数据,并看 hdfs 上表的元数据
元数据所在 hdfs 目录可以从 hive-site.xml 的配置中得到:
看到 hdfs 上数据与元数据
版权声明: 本文为 InfoQ 作者【InfoQ_Springup】的原创文章。
原文链接:【http://xie.infoq.cn/article/3dc7d7358de9a4dce8930ac99】。文章转载请联系作者。
评论