Оператор 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