Ошибка запроса Spark SQL - SQL с подзапросом, похоже, не получает записи - PullRequest
0 голосов
/ 30 марта 2020

У меня есть запрос Spark SQL, например:

Select * from xTable a Where Exist (filter subquery) AND (a.date IN (Select max(b.date) from xTable b))

При определенных обстоятельствах (если таблица фильтров не указана), мой filter subquery должен просто выполнить Select 1.

Всякий раз, когда я запускаю это в Impala, он возвращает записи, в Hive жалуется, что разрешено только 1 выражение подзапроса. Однако когда я запускаю его как Spark SQL в Spark 2.4, он возвращает пустой фрейм данных. Есть идеи почему? Что я делаю не так?

1 Ответ

0 голосов
/ 31 марта 2020

Хорошо, я думаю, что нашел причину. Это не связано с запросом. Это похоже на проблему при попытке создать таблицу с использованием файла CSV в Hive.

Когда вы выбираете источник - путь к файлу CSV в HDFS, а затем в формате - проверьте «Имеет заголовок» флажок.

Кажется, для создания таблицы все в порядке.

Затем, когда я выполняю следующее в Hive или Impala:

Select max(date) from xTable

Я получаю максимальную дату назад (где столбец даты является строкой)

Однако, когда я пытаюсь запустить его через Spark SQL:

, я получаю результат как date (то же имя, что и заголовок столбца).

Если я удаляю заголовок из CSV-файла и импортирую его, а они вручную создают заголовки и типы, то я не сталкиваюсь с этой проблемой.

Похоже на некоторую форму ошибки или может быть ошибка пользователя с моего конца.

...