Вы можете проанализировать вывод DESCRIBE TABLE, используя AWK, и сгенерировать разделенную запятыми строку SUM (col) в виде sum_col для числовых столбцов и column_list для всех остальных столбцов.В этом примере он генерирует оператор select с goup by.Выполнить в оболочке:
TABLE_NAME=your_schema.your_table
NUMERIC_COLUMNS=$(hive -S -e "set hive.cli.print.header=false; describe ${TABLE_NAME};" | awk -F " " 'f&&!NF{exit}{f=1}f{ if($2=="int"||$2=="double") printf c "sum("toupper($1)") as sum_"$1}{c=","}')
GROUP_BY_COLUMNS=$(hive -S -e "set hive.cli.print.header=false; describe ${TABLE_NAME};" | awk -F " " 'f&&!NF{exit}{f=1}f{if($2!="int"&&$2!="double") printf c toupper($1)}{c=","}')
SELECT_STATEMENT="select $NUMERIC_COLUMNS $GROUP_BY_COLUMNS from $TABLE_NAME group by $GROUP_BY_COLUMNS"
Я проверяю только int и двойные столбцы.Вы добавляете больше типов.Также вы можете оптимизировать его и выполнить DESCRIBE только один раз, а затем проанализировать результат, используя те же сценарии AWK.Надеюсь, у вас есть идея.