如何获取表头(模式)中的信息?

环保: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”。 也许将“来自table_name的显示列”与“ stack()”一起使用可能会有所帮助? 如果您能给我一些建议,我将不胜感激。