iceberg-hive 测试案例

iceberg-hive 测试案例

参考:官网调研传送门

蓝瘦香菇,iceberg 太难操作了。真心不如Delta Lake操作的顺利

一、配置及须知

1、配置jar包:

iceberg0.11.0版本,官网下载jar包,放到hive的lib目录下。

2、参数:
SET engine.hive.enabled=true;
SET iceberg.engine.hive.enabled=true;

SET iceberg.mr.catalog=hive; 
//使hive能访问spark下catalog为hive方式创建的ice表
//如果是spark-hadoop方式创建则不需要此参数,否则找不到表。

二、测试案例

1、建表

DROP table test.spark_hive;
CREATE EXTERNAL TABLE test.spark_hive( 
  `id` int, 
  `name` string)
STORED BY 'org.apache.iceberg.mr.hive.HiveIcebergStorageHandler' 
LOCATION 'hdfs://HDFS81339/tmp/iceberg/test/spark_hive'
TBLPROPERTIES (
  'iceberg.mr.catalog'='hadoop', 
  'iceberg.mr.catalog.hadoop.warehouse.location'='hdfs://HDFS81339/tmp/iceberg/test/spark_hive'
  );

划重点:如果不加这个,会导致hive无法读取spark表:

TBLPROPERTIES (
  'iceberg.mr.catalog'='hadoop', 
  'iceberg.mr.catalog.hadoop.warehouse.location'='hdfs://HDFS81339/tmp/iceberg/test/spark_hive'
  );

下图建表语句虽然成功,并且location了spark创建的iceberg表目录,但是无法读取spark所建的iceberg表数据。
在这里插入图片描述

2、插入数据

hive> insert into table iceberg_table values(5,'e');

3、删除及更新(不可用)

hive> delete from iceberg_table where id=5;
尝试使用不支持这些操作的事务管理器进行更新或删除操作
在这里插入图片描述

F&Q

1、hive是否可以访问Spark的ice表?

可以,但是必须注意以下
1、Spark 必须以hadoop 写入的方式才可以互通。
2、禁止使用SET iceberg.mr.catalog=hive; 参数,否则读取不到建表。
3、如果要删除表,需要先删除hive表再删除spark表,否则hive表删除报异常。
在这里插入图片描述

说真的,搞hive兼容spark真心吐了,需要注意的地方太多了。其实相比Spark来说hive还好,之后的Spark测试真心给我搞吐了。

总结

未完待续。

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值