我正在使用配置单元Map类型,我想知道配置单元如何处理键值对顺序?
例子:
假设我有下表:
CREATE TABLE db.my_table (col MAP<STRING, INT>)
INSERT INTO db.my_table
SELECT map('A', 1, 'B', 2, 'C', 3)
UNION ALL
SELECT map('C', 4, 'B', 5, 'A', 6)
将每 SELECT
语句返回相同顺序的键值对(从我的测试中,它们总是按原始顺序)?
SELECT col FROM db.my_table
{"A":1,"B":2,"C":3}
{"C":4,"B":5,"A":6}
那怎么办 map_values()
以及 map_keys()
(它们似乎也保持了原有的秩序)?
SELECT map_values(col), map_keys(col) FROM db.my_table
[1,2,3] | ["A","B","C"]
[4,5,6] | ["C","B","A"]
我也在用砖房 MapFilterKeysUDF
结果似乎是按键排序的。总是这样吗?
ADD jar hdfs://.../brickhouse-0.6.0.jar;
CREATE TEMPORARY FUNCTION filter_map AS 'brickhouse.udf.collect.MapFilterKeysUDF';
SELECT filter_map(col, array('C', 'B')) FROM db.my_table
{"B":2,"C":3}
{"B":5,"C":4}
综上所述:
我有3个主要问题(但非常感谢您能给出更复杂的解释):
每个 SELECT
语句返回Map的原始顺序?
做 map_values()
以及 map_keys()
遵循同样的惯例?
砖房的顺序是什么 MapFilterKeysUDF
结果?
暂无答案!
目前还没有任何答案,快来回答吧!