在Spark中开始一个Iceberg项目

在Spark中开始一个Iceberg项目

    • 在 Spark 中使用 Iceberg
    • Spark 中安装 Iceberg
    • 创建一个表
    • 读和写操作
    • 使用 SQL 读

在 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)