icebergWithHive
概述
iceberg支持通过读取和写iceberg使用StorageHandler
icberg整合hive
加载runtime jar
在hive开启支持iceberg,需要
HiveIcebergStorageHandler
和支持类需要在Hive的类路径上可用。将iceberg-hive-runtime
文件放到hive的classpath下`
Hadoop配置
为应用全局启用Hive支持,hive-site.xml配置
iceberg.engine.hive.enabled=true
如果在0.11.x版本开启Tez需要设置
hive.vectorized.execution.enabled=false
Catalog管理
全局hive catalog
从Hive引擎的角度来看,在运行时环境下的Hadoop配置中只有一个全局数据目录。相反,Iceberg支持多种不同的数据目录类型,如Hive、Hadoop、AWS Glue或自定义目录实现。iceberg还允许根据表在文件系统中的路径直接加载表。那些表不属于任何目录。用户可能希望通过Hive引擎读取这些跨目录和基于路径的表,以用于像join这样的用例。
hive元数据可以用不同方式加载iceberg表
如果没有
iceberg.catalog
配置表将会通过HiveCatalog加载如果
iceberg.catalog
设置了catalog名称,这个表将会被自定义catalog加载如果
iceberg.catalog
被设置为location_based_table,表将会直接使用表根路径加载。
自定义Icberg catalogs
注册HiveCatalog
注册HadoopCatalog
注册AWS GlueCatalog
DDL命令
CREATE EXTERNAL TABLE
在hive上创建iceberg外部表
hive catalog表
如前所述,通过启用Hive引擎特性的HiveCatalog创建的表可以直接被Hive引擎看到,所以不需要创建覆盖。
自定义catalog表
加载HDFS上的表
CREATE TABLE
hive支持直接创建一个新的iceberg表通过create table
Custom catalog table
如果表已经存在在自定义的catalog中将会覆盖掉。
DROP TABLE
查询SQL
Predicate pushdown:下推hive sql的where子句,在iceberg tableScan被实现。
Column projection:Hive SQL SELECT子句中的列被投影到Iceberg读取器中,以减少读取的列数。
Hive query engines:同时支持MapReduce和Tez查询执行引擎。
配置
SQL写
配置
INSERT INTO
类型兼容性
Hive和Iceberg支持不同类型的集合。iceberg可以自动执行类型转换,但不是针对所有组合,因此在设计表中的列类型之前,您可能希望了解iceberg中的类型转换。您可以通过Hadoop配置启用自动转换(默认不启用)
Hive对应iceberg类型
最后更新于