tencent cloud

文档反馈

Hive 访问 Iceberg 数据

最后更新时间:2024-10-30 11:42:13

    开发准备

    确认您已经开通了腾讯云,并且创建了一个 EMR 集群,详情参考创建集群
    在创建 EMR 集群时在软件配置界面选择 Hive、Spark、Iceberg 组件。

    通过 spark 创建 Iceberg 表

    登录 Master 节点并切换 hadoop 用户,执行以下命令启动 SparkSQL:
    spark-sql --master local[*] --conf spark.sql.extensions=org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions --conf spark.sql.catalog.local=org.apache.iceberg.spark.SparkCatalog --conf spark.sql.catalog.local.type=hadoop --conf spark.sql.catalog.local.warehouse=/usr/hive/warehouse --jars /usr/local/service/iceberg/iceberg-spark-runtime-3.2_2.12-0.13.0.jar
    
    说明:
    Iceberg 相关的包放置在 /usr/local/service/iceberg/ 目录下,--jars 使用的依赖包版本在不同 EMR 版本中可能存在差异,请查看并使用正确的依赖包。
    建表:
    spark-sql> CREATE TABLE local.default.t1 (id int, name string) USING iceberg;
    Time taken: 2.752 seconds
    插入数据:
    spark-sql> INSERT INTO local.default.t1 values(1, "tom");
    Time taken: 2.71 seconds
    查询数据:
    spark-sql> SELECT * from local.default.t1;
    1 tom
    Time taken: 0.558 seconds, Fetched 1 row(s)

    通过 Hive 查看 Iceberg 数据

    登录 Master 节点并切换 hadoop 用户,执行以下命令连接 Hive:
    hive
    添加 Iceberg 依赖包:
    hive> add jar /usr/local/service/iceberg/iceberg-hive-runtime-0.13.0.jar;
    创建外部表:
    hive> CREATE EXTERNAL TABLE t1
    STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler'
    LOCATION '/usr/hive/warehouse/default/t1'
    TBLPROPERTIES ('iceberg.catalog'='location_based_table');
    查询 t1 表记录数:
    hive> select count(*) from t1;
    OK
    1
    Time taken: 26.255 seconds, Fetched: 1 row(s)
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持