'Use named_struct function in Hive with all the columns of a table

In Hive, you can use a function named_struct in order to create a list of key value pairs; the keys are usually the column names and the values are the values in the corresponding column. For example,

$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'}
...

However, in order to make the list, I needed to explicitly write each column name. Is there any way to avoid doing this with either named_struct or some other similar function?

I expect to be able to write something like (assuming users has only three columns).

$hive> select id, named_struct(*) as list from users;


Solution 1:[1]

Since you are using all columns you don't need a named_struct. Something like struct("*") will work.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Soundararajan