我发现自己每次用 Spark 造 Iceberg 表都要耗费老大的劲,官方文档总是没有一个现成的 Demo,网上也搜索不到,全靠自己琢磨。故在这里记录一下,顺带帮助一下可能需要的人。
本地 Iceberg
Spark-SQL 启动 Iceberg:
./bin/spark-sql --packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.2\
--conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.local=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.local.type=hadoop \
--conf spark.sql.catalog.local.warehouse=$PWD/warehouse \
--conf spark.sql.defaultCatalog=local
注意 package 的名称:org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.2
。其中 3.5
是 spark 的版本,要使用自己 Spark 对应的版本。2.12
是 Spark 对应的 scala 版本。1.4.2
是 iceberg 的版本。
Spark-SQL 创建一个 Iceberg V2 表:
CREATE TABLE pos_delete_parquet (id int, data string) USING iceberg
TBLPROPERTIES(
"write.delete.mode"="merge-on-read",
"write.update.mode"="merge-on-read",
"write.merge.mode"="merge-on-read",
"format-version"="2");
merge-on-read
只有 iceberg v2 才有,指定了就算是 iceberg v2 的表了。
Iceberg + HMS 连接
./bin/spark-sql \
--packages org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.4.2\
--conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \
--conf spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog \
--conf spark.sql.catalog.spark_catalog.type=hive \
--conf spark.sql.catalog.local=org.apache.iceberg.spark.SparkCatalog \
--conf spark.sql.catalog.local.type=hive \
--conf spark.sql.defaultCatalog=local \
--conf spark.sql.catalog.local.uri=thrift://172.26.80.92:9083
解决 Spark packages 下载慢
受制于网络问题,有时候 --packages
指定的 jar 下载很慢,这时候可以直接把对应的 jar 包放置到 Spark 目录中的 jars
目录下即可。
未完待续,持续更新
原创文章,作者:Smith,如若转载,请注明出处:https://www.inlighting.org/archives/spark-sql-useful-sqls
评论列表(3条)
学习到了
@danny:谢谢
厉害呀(☆ω☆)