更新时间:2024-10-24 GMT+08:00
分享

从零开始使用Iceberg

本章节主要介绍如何在spark-sql中操作Iceberg表,推荐使用Hive Catalog方式登录spark-sql。

Iceberg当前为公测阶段,若需使用需联系技术支持申请白名单开通。

前提条件

  • 已安装Spark服务,且服务运行状态正常。
  • 已安装Spark客户端,详细操作请参见安装客户端(3.x及之后版本)
  • 已在Manager界面添加人机用户,例如:iceberguser,且该用户属于hadoophive用户组,主组为hadoop

操作步骤

  1. 使用root登录客户端安装节点,执行如下命令:

    cd 客户端安装目录

  2. 执行以下命令环境变量并认证用户:

    source bigdata_env

    kinit 创建的业务用户(未开启Kerberos认证的用户请跳过该操作)

  3. 将以下参数添加到“Spark/spark/conf/spark-defaults.conf”文件中并保存:

    spark.sql.catalog.local=org.apache.iceberg.spark.SparkCatalog
    spark.sql.catalog.local.type=hadoop
    spark.sql.catalog.local.warehouse=/tmp/ice-warehouse
    spark.sql.catalog.spark_catalog=org.apache.iceberg.spark.SparkSessionCatalog
    spark.sql.catalog.spark_catalog.type=hive

  4. 执行以下命令登录spark-sql客户端:

    • Hadoop Catalog方式

      spark-sql --master yarn \

      --conf spark.sql.defaultCatalog=local \

      --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \

      --conf spark.sql.storeAssignmentPolicy=ANSI

      • Hadoop Catalog方式不支持在创建数据库和创建表时指定Location。
      • 如果使用Hadoop Catalog,需要设置操作用户具有3中配置的“spark.sql.catalog.local.warehouse”路径的写和执行权限。
    • Hive Catalog方式

      spark-sql --master yarn \

      --conf spark.sql.defaultCatalog=spark_catalog \

      --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions \

      --conf spark.sql.storeAssignmentPolicy=ANSI

  5. 执行以下命令创建数据库:

    create database if not exists iceberg_db;

  6. 执行以下命令创建Iceberg表:

    use iceberg_db;

    CREATE TABLE if not exists sample_table (id bigint, data string) USING iceberg TBLPROPERTIES ('write.format.default'='parquet');

  7. 执行以下命令向Iceberg表中插入数据:

    INSERT INTO sample_table VALUES (4, 'a'), (5, 'b'), (6, 'c');

  8. 执行以下命令更新表数据:

    UPDATE sample_table set data = 'd' where id = 4;

  9. 执行以下命令删除数据:

    DELETE FROM sample_table where id = 5;

  10. 执行以下命令查询Iceberg表数据:

    select * from sample_table;

相关文档