Для 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)