2017-01-07 6 views
4

Я переношу запрос из Hive в SparkSQL, но, столкнувшись с одной проблемой с столбцом Map.столбец sparkSQL Map в группе по условию

Мой запрос

spark.sql(select col1,col2,my_map,count(*) from table group by col1,col2,my_map) 

Ошибки я получаю

`my_map` cannot be used as a grouping expression because its data type map<string,string> is not an orderable data type.; 

Ключи в my_map всегда различаются. Я пытался использовать устаревший HiveContext, но это не помогло. Есть ли обходной путь для этого?

Спасибо!

+1

группировка по карте кажется довольно деликатной операцией. Вы действительно хотите это сделать? В любом случае, вы можете подумать о нормализации карты перед выполнением этого запроса (особенно если вы ожидаете только нескольких ключей), в противном случае вы должны преобразовать его взад и вперед в другом формате, который можно легко обработать с помощью sql. – Chobeat

+0

@Chobeat Я делаю это в Hive до сих пор. Любая идея, как я мог бы преобразовать его взад и вперед в другом формате? – user100001

+1

список кортежей может быть вариантом, я считаю, что он должен работать. Но будьте осторожны, это действительно близко к грязной работе вокруг – Chobeat

ответ

0

Ответ в ответе об ошибке. Вам нужно сделать my_map в упорядоченный тип данных! :)