在Spark中开始一个Iceberg项目
程序员文章站
2022-03-08 08:05:19
...
在Spark中开始一个Iceberg项目
在 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""")
推荐阅读
-
NET 在一个数组中查找另一个数组所在起始位置(下标从0开始,未找到返回-1)
-
我们在删除SQL Sever某个数据库表中数据的时候,希望ID重新从1开始,而不是紧跟着最后一个ID开始需要的命令
-
第一个在Python 环境中开发的Spark应用示例
-
在Tomcat中创建一个项目
-
怎样在idea中创建一个javaWeb项目
-
在IDEA 2020.3.1中部署Tomcat并且创建第一个web项目的过程详解
-
NET 在一个数组中查找另一个数组所在起始位置(下标从0开始,未找到返回-1)
-
在yii2中怎么配置前后台,使得在一个项目中同时可以登陆前后台
-
我们在删除SQL Sever某个数据库表中数据的时候,希望ID重新从1开始,而不是紧跟着最后一个ID开始需要的命令_MySQL
-
我们在删除SQL Sever某个数据库表中数据的时候,希望ID重新从1开始,而不是紧跟着最后一个ID开始需要的命令_MySQL