在 Hive 中,您可以使用函数
named_struct
来创建键值对列表;键通常是列名,值是相应列中的值。例如,
$hive> select id, named_struct('foo', name, 'address', address) as list from users;
id list
1 {'foo':'Alice', 'address':'Wonderland'}
2 {'foo':'Bob', 'address':'Portland'}
...
但是,为了制作列表,我需要显式地写入每个列名称。有什么方法可以避免使用
named_struct
或其他类似的函数执行此操作吗?
我希望能够写出类似的东西(假设
users
只有三列)。
$hive> select id, named_struct(*) as list from users;
由于您正在使用所有列,因此不需要命名结构。像
struct("*")
这样的东西会起作用。