欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

在Spark中开始一个Iceberg项目

程序员文章站 2022-03-08 08:05:19
...

在 Spark 中使用 Iceberg

最新版本是 0.8.0-incubating .
要在 Spark shell 中使用 Iceberg,请使用 --parkage 选项:

spark-shell --packages org.apache.iceberg:iceberg-spark-runtime:0.8.0-incubating

您还可以在本地构建 Iceberg,并使用 --jar 添加 jar。 这对于测试未发布的功能或开发新功能很有帮助:

./gradlew assemble
spark-shell --jars spark-runtime/build/libs/iceberg-spark-runtime-8c05a2f.jar

Spark 中安装 Iceberg

如果希望在 Spark 安装中包含 Iceberg,请将 iceberg-spark-runtime Jar 添加到 Spark 的 jars 文件夹中。必须用你正在使用的 git hash 替换 8c05a2f。

创建一个表

Spark 2.4 仅限于读写现有的 Iceberg 表。
使用 Iceberg API 创建 Iceberg 表,下面介绍如何使用源 Dataset 在 Spark 中创建第一个 Iceberg 表。
首先,导入 Iceberg 类并创建一个 catalog 客户端:import org.apache.iceberg.hive.HiveCatalog

import org.apache.iceberg.catalog.TableIdentifier
import org.apache.iceberg.spark.SparkSchemaUtil

val catalog = new HiveCatalog(spark.sparkContext.hadoopConfiguration)

然后,创建一个数据集写入表中,并为其获取一个 Iceberg 模式:

val data = Seq((1, "a"), (2, "b"), (3, "c")).toDF("id", "data")
val schema = SparkSchemaUtil.convert(data.schema)

最后,使用模式创建一个表:

val name = TableIdentifier.of("default", "test_table")
val table = catalog.createTable(name, schema)

读和写操作

一旦你的表被创建,就可以在 Spark 2.4 加载和保存:

// write the dataset to the table
data.write.format("iceberg").mode("append").save("default.test_table")

// read the table
spark.read.format("iceberg").load("default.test_table")

使用 SQL 读

你也可以在 SQL 中用表创建一个临时视图:

spark.read.format("iceberg").load("default.test_table").createOrReplaceTempView("test_table")
spark.sql("""SELECT count(1) FROM test_table""")
相关标签: Iceberg