Ошибка SparkSQL: collect_set () не может иметь данные типа карты - PullRequest
0 голосов
/ 18 июня 2019

Для SparkSQL в улье, когда я использовал named_struct в запросе, он возвращает результаты:

SELECT id, collect_set(emp_info) as employee_info
FROM
    (
     SELECT t.id, named_struct("name", t.emp_name, "dept", t.emp_dept) AS emp_info
     FROM mytable t
    ) a
GROUP BY id

Но когда я заменил named_struct на map, я получил ошибку:

SELECT id, collect_set(emp_info) as employee_info
FROM
    (
     SELECT t.id, map("name", t.emp_name, "dept", t.emp_dept) AS emp_info
     FROM mytable t
    ) a
GROUP BY id

ERROR yarn.ApplicationMaster: User class threw exception: org.apache.spark.sql.AnalysisException: cannot resolve 'collect_set(a.`emp_info`)' due to data type mismatch: collect_set() cannot have map type data; line 36 pos 27;
'Distinct

Я хочу вернуть карту name и dept, как использовать с collect_set? К вашему сведению: этот запрос с map выполняется без проблем в Hive (Hue)

...