GaussDB 200本身支持对表的分区存储,从而加快查询时的过滤。通过HIVE创建表,并以ORC文件格式写入HDFS时同样可以指定分区属性。GaussDB 200需要将自身的分区属性同HIVE创建表时的分区属性相结合,保证分区映射及查询的正确性。
GaussDB 200通过CREATE FOREIGN TABLE指定创建表使用的分区信息。CREATE FOREIGN TABLE的详细信息请参见CREATE FOREIGN TABLE (SQL on Hadoop or OBS)。
使用分区方式的注意事项包括:
GaussDB 200的HDFS外表定义分区列数目应不大于HIVE表中定义的分区列数量。同时定义顺序必须和在HIVE表中分区列定义顺序保持一致。
CREATE TABLE inner_tbl( a int, b int) WITH(ORIENTATION='column');NOTICE: The 'DISTRIBUTE BY' clause is not specified. Using 'a' as the distribution column by default.
HINT: Please use 'DISTRIBUTE BY' clause to specify suitable data distribution column.
CREATE TABLE
DROP FOREIGN TABLE region010;DROP FOREIGN TABLECREATE FOREIGN TABLE region010 (
R_REGIONKEY INT4,
constraint part_11constr_unique unique (R_REGIONKEY) not enforced,
R_NAME TEXT,
R_COMMENT TEXT)
SERVER hdfs_server
OPTIONS(format 'orc', foldername '/user/hive/warehouse/mppdb.db/region_orc11_64stripe', encoding 'GBK')
DISTRIBUTE BY roundrobin;
NOTICE: CREATE FOREIGN TABLE / UNIQUE will create constraint "part_11constr_unique" for foreign table "region010"
CREATE FOREIGN TABLE
EXPLAIN SELECT * FROM region010, inner_tbl WHERE a=R_REGIONKEY;id | operation | E-rows | E-width | E-costs
----+------------------------------------------------+--------+---------+---------
1 | -> Row Adapter | 43 | 76 | 68.71
2 | -> Vector Streaming (type: GATHER) | 43 | 76 | 68.71
3 | -> Vector Hash Join (4,5) | 43 | 76 | 66.03
4 | -> Vector Foreign Scan on region010 | 853 | 68 | 52.65
5 | -> Vector Streaming(type: BROADCAST) | 10 | 8 | 10.63
6 | -> CStore Scan on inner_tbl | 10 | 8 | 10.01
(6 rows)
Predicate Information (identified by plan id)
---------------------------------------------------------------
3 --Vector Hash Join (4,5)
Hash Cond: (region01.r_regionkey = inner_tbl.a)
Generate Bloom Filter On Expr: inner_tbl.a
Generate Bloom Filter On Index:
4 --Vector Foreign Scan on region01
Server Type: hdfs
Filter By Bloom Filter On Expr: region01.r_regionkey
Filter By Bloom Filter On Index:
(8 rows)
说明:不支持下推的场景可以参考语句下推调优章节的说明。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3160398/ ,如需转载,请注明出处,否则将追究法律责任。