Spark-SQL 有用的 SQL

我发现自己每次用 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

打赏 微信扫一扫 微信扫一扫
SmithSmith
上一篇 2023年11月12日 下午7:38
下一篇 2024年3月25日 下午8:25

相关推荐

  • RLE 编码在 Apache ORC 中的实现

    介绍 Apache ORC 中 RLE v1 和 RLE v2 的具体算法实现。

    2024年6月8日
    4122
  • Trino / StarRocks 阿里云 EMR Kerberos 认证指南

    Kerberos 是最为头疼的鉴权配置,但是 Hadoop 全家桶绕不开,只能硬着头皮干了。本文以 Trino 和 StarRocks 为例,讲述如何在非 EMR 的节点上,通过一…

    2023年8月21日
    1.0K0
  • ORC vs Parquet,孰强孰弱?

    本文深入探讨了 ORC 和 Parquet 这两种主流数据湖文件格式的异同。从文件结构、类型系统、NULL处理到复杂类型存储,文章全面比较了两种格式的设计理念和实现细节。特别关注了统计信息的存储、随机 IO 性能、Footer 大小以及 Schema Evolution 支持等关键方面。虽然Parquet 在当前市场占据优势,但文章指出两种格式各有千秋,选择应基于具体使用场景。通过这篇深度分析,读者可以更好地理解这两种格式的优缺点,为数据湖存储方案的选择提供有价值的参考。

    2024年8月10日
    8152

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

评论列表(3条)

  • danny
    danny 2024年1月27日 下午3:15

    学习到了

  • 托尼
    托尼 2023年11月30日 下午3:21

    厉害呀(☆ω☆)