联合查询示例
更新时间:2025-01-23
前提条件
已完成创建 BMR 集群,并且配置了 Paimon、Spark 组件,详情请参见创建集群。
操作示例
基于Hive元信息联合查询
- SSH登录集群,参考SSH连接到集群。
- 创建 Paimon 表,参考以下命令:
Plain Text
1spark-sql
2USE paimon;
3USE default;
4drop table if exists spark_paimon;
5-- 如果没有 bucket,对 spark 没有影响,hive 可以读,但是不能写入。
6create table spark_paimon (
7 id int,
8 name string
9) tblproperties (
10 'primary-key' = 'id',
11 'bucket' = '4'
12);
13
14INSERT INTO spark_paimon VALUES (1, 'spark-paimon-1'), (2, 'spark-paimon-2');
15
16select * from spark_paimon;
- 结果显示如下:
Plain Text
1+------+----------------+
2| id | name |
3+------+----------------+
4| 1 | spark-paimon-1 |
5| 2 | spark-paimon-2 |
6+------+----------------+
- 创建 Hive 表,参考以下命令:
Plain Text
1use default;
2CREATE TABLE hive_table (
3 id INT,
4 age INT
5);
6
7INSERT INTO hive_table VALUES (1, 10), (2, 20);
8select * from hive_table;
- 结果显示如下:
Plain Text
1OK
21 10
32 20
- Hive 执行联合查询,参考以下命令:
Plain Text
1SELECT a.id, a.age, b.name
2FROM hive_table a
3JOIN spark_paimon b
4ON a.id = b.id;
- 结果显示如下:
Plain Text
1OK
22 20 spark-paimon-2
31 10 spark-paimon-1
- Spark 执行联合查询 ,参考以下命令:
Plain Text
1SELECT a.id, a.age, b.name
2FROM spark_catalog.default.hive_table a
3JOIN paimon.default.spark_paimon b
4ON a.id = b.id;
- 结果显示如下:
Plain Text
11 10 spark-paimon-1
22 20 spark-paimon-2
基于Filesystem元信息联合查询
- SSH登录集群,参考SSH连接到集群;
- 创建 Paimon 表,参考以下命令:
Plain Text
1SET spark.sql.catalog.paimon_fs=org.apache.paimon.spark.SparkCatalog;
2SET spark.sql.catalog.paimon_fs.warehouse=hdfs://bmr-cluster/warehouse/paimon/spark;
3SET spark.sql.catalog.paimon_fs.metastore=filesystem;
4
5use paimon_fs;
6create table fs_paimon (
7 id int,
8 name string
9) tblproperties (
10 'primary-key' = 'id',
11 'bucket' = '4'
12);
13
14DESCRIBE FORMATTED fs_paimon;
- 结果显示如下:
Plain Text
1id int
2name string
3
4# Metadata Columns
5__paimon_file_path string
6__paimon_row_index bigint
7__paimon_partition struct<>
8__paimon_bucket int
9
10# Detailed Table Information
11Name default.fs_paimon
12Type MANAGED
13Location hdfs://bmr-cluster/warehouse/paimon/spark/default.db/fs_paimon
14Provider paimon
15Owner hive
16Table Properties [bucket=4,path=hdfs://bmr-cluster/warehouse/paimon/spark/default.db/fs_paimon,primary-key=id]
- 设置元信息,参考以下命令:
Plain Text
1SET spark.sql.catalog.paimon_fs.metastore;
- 插入数据,参考以下命令:
Plain Text
1INSERT INTO fs_paimon VALUES (1, 'fs-paimon-1'), (2, 'fs-paimon-1');
2select * from fs_paimon;
- 执行联合查询(spark_table 为 spark-sql 创建):
Plain Text
1SELECT a.id, a.age, b.name
2FROM spark_catalog.default.spark_table a
3JOIN paimon_fs.default.fs_paimon b
4ON a.id = b.id;
- 结果显示如下:
Plain Text
11 10 fs-paimon-1
22 20 fs-paimon-1
- 执行联合查询(hive_table 为hive创建):
Plain Text
1SELECT a.id, a.age, b.name
2FROM spark_catalog.default.hive_table a
3JOIN paimon_fs.default.fs_paimon b
4ON a.id = b.id;
- 结果显示如下:
Plain Text
11 10 fs-paimon-1
22 20 fs-paimon-1