Iceberg 源码阅读(一) 搭建本地调试环境

您所在的位置:网站首页 iceberg部署 Iceberg 源码阅读(一) 搭建本地调试环境

Iceberg 源码阅读(一) 搭建本地调试环境

#Iceberg 源码阅读(一) 搭建本地调试环境| 来源: 网络整理| 查看: 265

目前数据湖是一个比较火的方向,它确实能解决传统数仓的很多问题,但相关资料还比较少,尤其是 Iceberg。Iceberg 原理介绍的文章网上已经比较多了,但对于实现细节依然是一头雾水,我准备写一些列关于Iceberg 源码分析的文档,在有了充分的掌握后,再总结分析 Iceberg 是如何解决传统数仓遇到的问题。如遇到任何问题欢迎在公众号 大数据修炼手册 上与我联系。

阅读源码最好的方式就是搭建好本地环境,让代码跑在 Idea 中起来,然后对代码进行调试。本篇文章主要讲解 Iceberg + Spark 本地调试环境的搭建。

步骤一 创建maven项目

使用idea 创建maven 项目

步骤二 添加maven 依赖 4.0.0 com.ideal.bigdata iceberg-demo 1.0-SNAPSHOT UTF-8 1.8 1.8 org.apache.spark spark-core_2.12 3.1.0 org.apache.spark spark-sql_2.12 3.1.0 org.apache.iceberg iceberg-spark3-runtime 0.12.1 步骤三 编写主类

代码比较简单,我们直接用SQL跑吧。

首先通过配置项(spark.sql.catalog.local.type)指定了 catalog 类型为 hadoop,主要是为了方便本地调试,这样就不用依赖Hive Metastore 同时 iceberg的数据文件会生成在本地,便于观察。如果后续需要调试Hive catalog 部分我们再切回 hive catalog 即可。然后通过配置项 (spark.sql.catalog.local.warehouse) 指定了 iceberg 数据文件和元数据文件的存放路径。接下来就是常规的SQL,包括创建表,插入数据,查询数据,显示结果

把整个代码运行起来,如果一切正常,当前工程目录下会多出来一个 iceberg_warehouse目录,里面已经生成了相应的iceberg 文件。

package com.ideal.bigdata; import org.apache.spark.sql.Dataset; import org.apache.spark.sql.Row; import org.apache.spark.sql.SparkSession; public class IcebergDemo { public static void main(String[] args) { SparkSession spark = SparkSession .builder() .master("local") .appName("Iceberg spark example") .config("spark.sql.extensions", "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions") .config("spark.sql.catalog.local", "org.apache.iceberg.spark.SparkCatalog") .config("spark.sql.catalog.local.type", "hadoop") //指定catalog 类型 .config("spark.sql.catalog.local.warehouse", "iceberg_warehouse") .getOrCreate(); spark.sql("create database iceberg_db"); spark.sql("CREATE TABLE local.iceberg_db.table (id bigint, data string) USING iceberg\n"); spark.sql("INSERT INTO local.iceberg_db.table VALUES (1, 'a'), (2, 'b'), (3, 'c')"); Dataset result = spark.sql("select * from local.iceberg_db.table"); result.show(); } }步骤四 attach 源码

按照以上步骤,代码已经可以运行起来了,但是发现在 idea 中 attach 不上 iceberg 的源码,为了解决这个问题把maven 依赖改成如下,不直接使用iceberg 生成好的 runtime 包。

4.0.0 com.ideal.bigdata iceberg-demo 1.0-SNAPSHOT UTF-8 1.8 1.8 org.apache.spark spark-core_2.12 3.1.0 org.apache.avro avro org.apache.spark spark-sql_2.12 3.1.0 org.apache.parquet parquet-column org.apache.parquet parquet-hadoop-bundle org.apache.parquet parquet-hadoop org.apache.iceberg iceberg-core 0.12.1 org.apache.iceberg iceberg-spark3 0.12.1 org.apache.iceberg iceberg-spark3-extensions 0.12.1 org.antlr antlr4 org.antlr antlr4-runtime org.apache.parquet parquet-column 1.12.2 org.apache.parquet parquet-hadoop 1.12.2 org.apache.parquet parquet-hadoop-bundle 1.12.2 org.apache.avro avro 1.10.1

这样就可以在idea 中关联到 iceberg 对应源码,开启iceberg 的源码阅读之旅,祝旅途愉快。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3