我有下表:
ID Data
101 [0,0,1,1,1]
102 [0,0,0,1,0]
103 [1,0,1,0,1]
如何在不使用Array index的情况下将数组分解为多个列(因为实际的Array有大约16 k个元素)以生成下表:
ID Data_1 Data_2 Data_3 Data_4 Data_5
101 0 0 1 1 1
102 0 0 0 1 0
101 1 0 1 0 1
我不能就这么做:
SELECT ID, Data[0], Data[1], Data[2], Data[3], Data[4] FROM tmp_table;
因为我在数组中有大约16,000个元素,这将是一个相当大的查询。
编辑:我需要使用Hiveql来做这件事,所以不能使用PySpark。
1条答案
按热度按时间wgeznvg71#
在pyspark中,您可以聚合数组框架来计算列
Data
中的max数组的大小,然后根据数组中的位置动态提取数组项