准备
Hadoop | 3.3.2 |
Spark | 3.3.0 |
scala | 2.13.8 |
配置Spark
- 下载jar包
- 下载好的
iceberg-spark-runtime-3.3_2.12-0.14.0.jar
包放入/spark/jars
目录下
- 配置
/spark/conf/spark-defaults.conf
文件
root@redis01:/usr/local/spark/conf# vim spark-defaults.conf
spark.sql.catalog.hadoop_prod = org.apache.iceberg.spark.SparkCatalog spark.sql.catalog.hadoop_prod.type = hadoop spark.sql.catalog.hadoop_prod.warehouse = hdfs://redis01:8020/spark/warehouse spark.sql.catalog.catalog-name.type = hadoop spark.sql.catalog.catalog-name.default-namespace = db spark.sql.catalog.catalog-name.warehouse = hdfs://redis01:8020/spark/warehouse
分发
iceberg-spark-runtime-3.3_2.12-0.14.0.jar
包、配置spark-defaults.conf
到其他节点root@redis01:/usr/local/spark/jars# xsync iceberg-spark-runtime-3.3_2.12-0.14.0.jar root@redis01:/usr/local/spark/conf# xsync spark-defaults.conf
启动
root@redis01:/usr/local/spark/bin# ./spark-sql
查看数据库
# 这里执行show databases不会显示hadoop_prod这个库,直接使用即可 spark-sql> show databases;
# 切换到hadoop_prod spark-sql> use hadoop_prod; # 创建表 spark-sql> create database db; # 使用db spark-sql> use db; # 插入表 create table testA( id bigint, name string, age int, dt string) USING iceberg PARTITIONED by(dt);
# 插入数据 insert into testA values(1,"henggao",18,'2022-09-01'); # 查询 select * from testA;
查看HDFS
其他操作
overwrite操作
当向表中执行overwrite覆盖操作是,与 hive 一样,会将原始数据重新刷新。注意覆盖的不是整张表的数据,只是这个分区的数据。被覆盖的数据不会被物理删除,还会存在HDFS上,除非是对表进行drop操作。