Оператор select в улье возвращает несколько столбцов с нулевым значением

Я видел, что подобные вопросы задавались много раз, но эти решения не помогли мне. Я создал внешнюю таблицу кустов, так как у меня были данные из выходных данных только для карт. Затем с помощью команды загрузки я дал путь для конкретного файла. Это показало хорошо. Но когда я даю select * from table Команда возвращает некоторый столбец с нулевыми значениями. Каждая команда, которую я выполнил, находится на рис.

Мой разделитель в файле ||так что я упомянул то же самое в команде создания таблицы тоже.

Вот мой входной файл. А вот и картинка ошибки. Я также попробовал нормальную таблицу вместо внешней таблицы. Это тоже показало ту же ошибку. Я также попытался упомянуть разделитель как //|| а также \|\|, Но никто не работал.

1 ответ

Решение

Проблема, с которой вы сталкиваетесь, связана с несколькими символами в качестве разделителя поля.

Согласно документации разделитель поля должен быть CHAR

row_format
  : DELIMITED [FIELDS TERMINATED BY char [ESCAPED BY char]] [COLLECTION ITEMS TERMINATED BY char]
        [MAP KEYS TERMINATED BY char] [LINES TERMINATED BY char]
        [NULL DEFINED AS char]   -- (Note: Available in Hive 0.13 and later)

Вам нужно изменить свои данные, чтобы иметь только один разделитель поля символа.

Если вы не можете сделать это, тогда другой подход - использовать таблицу этапов с одним полем. Загрузите ваши данные в эту таблицу, а затем в вашу фактическую целевую таблицу, разделите столбец в таблице этапов по || разделитель, а затем вставить. Вы должны убедиться, что число полей в данных соответствует, иначе ваш окончательный вывод будет отключен.

Ссылка: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL

Другие вопросы по тегам