环境:spark2.4.5
来源:id-name.json
{"1": "a", "2": "b", "3":, "c"..., "n": "z"}
我以json格式将.json文件加载到spark数据集中,其存储方式如下:
+---+---+---+---+---+
| 1 | 2 | 3 |...| n |
+---+---+---+---+---+
| a | b | c |...| z |
+---+---+---+---+---+
我希望它能产生这样的结果:
+------------+------+
| id | name |
+------------+------+
| 1 | a |
| 2 | b |
| 3 | c |
| . | . |
| . | . |
| . | . |
| n | z |
+------------+------+
我使用spark sql的解决方案:
select stack(n, '1', `1`, '2', `2`... ,'n', `n`) as ('id', 'name') from table_name;
它不能满足我的需求,因为我不想在sql中硬编码所有的id。也许将“show columns from table\u name”与“stack()”一起使用会有所帮助?如果你能给我一些建议,我将不胜感激。
1条答案
按热度按时间xwbd5t1u1#
为创建所需的值
stack
动态&在需要的地方使用它。请检查下面的代码以生成相同的动态值。