Моя текущая проблема следующая ...
Exception in thread "main" org.apache.spark.sql.AnalysisException: expression 'mapField' cannot be used as a grouping expression because its data type map<string,string> is not an orderable data type.;;
То, чего я пытаюсь добиться, - это просто группировать записи внутри DataFrame по заданному набору столбцов, но, похоже, происходит сбой при группировании со столбцами MapType, такими как упоминалось ранее.
.groupBy(
...
"mapField",
...
)
У меня есть пара идей, но должно быть более простое решение этой проблемы, чем следующие, о которых я думал ...
У меня есть ключ, значение каждого из элементов, сохраненных в объединенной строке в DF, так что я мог бы, возможно, проанализировать их в Map и затем сохранить, используя withColumn
, но не нашел какой-то подход, и я тоже не смог заставить работать. Это разумно сделать?
Перегруппировать в RDD и сгруппировать его там, затем обратно в DF (слишком много хлопот, я думаю)
EDIT
Пример ввода
id | myMap
'sample' | Map('a' -> 1, 'b' -> 2, 'c' -> 3)
желаемый выход
id | a | b | c
'sample' | 1 | 2 | 3