本文介绍在 LAS 集群中,通过 Spark SQL 对 Iceberg 表进行创建等操作。
spark.sql.extensions=org.apache.ranger.authorization.spark.authorizer.RangerSparkSQLExtension,org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions
spark-sql
/usr/lib/emr/current/kyuubi/bin/beeline -n hive -p KtVMyIFnqavBc1HS -u "jdbc:hive2://las-master-1:10009"
presto-cli --user hive --password cptatLnbyBQ5nPuP
说明
presto仅支持查询操作。
CREATE DATABASE IF NOT EXISTS iceberg.iceberg_db;
CREATE TABLE IF NOT EXISTS iceberg.iceberg_db.spark_pokes( rank BIGINT, suite STRING ) USING iceberg;
CREATE TABLE IF NOT EXISTS iceberg.iceberg_db.spark_pokes( rank BIGINT, suite STRING ) USING iceberg PARTITIONED BY (suite);
INSERT INTO iceberg.iceberg_db.spark_pokes VALUES (1, 'name1'), (2, 'name2');
SELECT * FROM iceberg.iceberg_db.spark_pokes;
UPDATE iceberg.iceberg_db.spark_pokes SET suite = 'volcano' WHERE rank = 2;
DELETE FROM iceberg.iceberg_db.spark_pokes WHERE rank = 2;
DROP TABLE iceberg.iceberg_db.spark_pokes;
说明
DROP TABEL 方式删除表,只是从 Hive Metastore 中删除表的元数据,表的数据还是会保留。
接下来为您介绍 Iceberg 表使用数据湖元数据的必要配置。
Spark 支持的 catalog type 有 Hive 和 Hadoop。关于 catalog 的参数配置还可参考 Iceberg 官网。
参数 | 参数值 | 描述 |
---|---|---|
spark.sql.catalog. | hive | 底层 Iceberg catalog 实现类型,HiveCatalog,或者HadoopCatalog。如果未配置,则采用 custom catalog。 |
spark.sql.extensions | org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions | Spark SQL 扩展模块。固定值。 |
spark.sql.catalog. | org.apache.iceberg.spark.SparkCatalog | Catalog 名称。固定值。 |
spark.sql.catalog. | thrift://master-1-1:9083 | Metastore 的地址。查看 Hive 组件的配置文件 hive-site 中 hive.metastore.uris 参数对应的值。 |
spark.sql.catalog. | hdfs://master-1-1:8020/warehouse/path | Warehouse 地址。查看 Hive 组件的配置文件 hive-site 中hive.metastore.warehouse.dir参数对应的值,也可以自定义路径。也支持 TOS 路径。 |
示例:
spark.sql.catalog.hive_prod = org.apache.iceberg.spark.SparkCatalog spark.sql.catalog.hive_prod.type = hive spark.sql.catalog.hive_prod.uri = thrift://master-1-1:9083 # omit uri to use the same URI as Spark: hive.metastore.uris in hive-site.xml
参数 | 参数值 | 描述 |
---|---|---|
spark.sql.catalog. | hadoop | 底层 Iceberg catalog 实现类型,HiveCatalog,或者 HadoopCatalog。如果未配置,则采用 custom catalog。 |
spark.sql.extensions | org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions | Spark SQL 扩展模块。固定值。 |
spark.sql.catalog. | org.apache.iceberg.spark.SparkCatalog | Catalog 名称。固定值。 |
spark.sql.catalog. | hdfs://master-1-1:8020/warehouse/path | Warehouse 地址。可以采用 HDFS 存储,也可以采用 TOS 存储 |
示例:
spark.sql.catalog.hadoop_prod = org.apache.iceberg.spark.SparkCatalog spark.sql.catalog.hadoop_prod.type = hadoop spark.sql.catalog.hadoop_prod.warehouse = hdfs://master-1-1:8020/warehouse/path
参数 | 参数值 | 描述 |
---|---|---|
spark.sql.catalog. | 底层 Iceberg catalog 实现类型。spark.sql.catalog. |
Hive 中支持 Iceberg 的 catalog type 有 Hive、Hadoop,也可以为空。 type 不同,配置项也不同:
参数 | 说明 |
---|---|
iceberg.catalog.<catalog_name>.type | 配置为 Hive |
iceberg.catalog.<catalog_name>.uri | Metastore 的地址。查看 Hive 组件的配置文件 hive-site 中 hive.metastore.uris 参数对应的值。 |
iceberg.catalog.<catalog_name>.clients | 客户端 pool 的个数 |
示例:
SET iceberg.catalog.another_hive.type=hive; SET iceberg.catalog.another_hive.uri=thrift://master-1-1:9083;
参数 | 说明 |
---|---|
iceberg.catalog.<catalog_name>.type | 配置为 hadoop |
iceberg.catalog.iceberg.clients | 客户端 pool 的个数 |
iceberg.catalog.iceberg.warehouse | Warehouse 地址 |
示例:
SET iceberg.catalog.hadoop.type=hadoop; SET iceberg.catalog.hadoop.warehouse=hdfs://master-1-1:8020/warehouse;
参数 | 说明 |
---|---|
iceberg.catalog.<catalog_name>.catalog-impl | catalog 的实现。catalog type 为空时,需配置。 |