#hadoop #hive
#hadoop #улей
Вопрос:
Я попытался создать таблицу в hive, используя следующую команду:
CREATE TABLE apple (dates STRING, open INT, high INT, low INT, close INT, adj_close DECIMAL, vol INT) row format delimited fields terminated by ',' lines terminated by 'n' tblproperties ("skip.header.line.count"="1");**
Затем я попытался загрузить данные с помощью команды:
LOAD DATA INPATH '/user/root/stockdata/APPL.csv' OVERWRITE INTO TABLE apple;
Файл APPL.csv хранится в HDFS
Выполнение вышеуказанного привело к следующей ошибке:
Ошибка: Ошибка при компиляции инструкции: СБОЙ: SemanticException не удается загрузить данные в таблицу назначения. Ошибка: файл, который вы пытаетесь загрузить, не соответствует формату файла целевой таблицы. (состояние = 42000, код = 40000)
Кто-нибудь может помочь решить эту проблему?
Ответ №1:
Поместите файл непосредственно в расположение таблицы.
hdfs dfs -copyFromLocal /user/root/stockdata/APPL.csv' /user/<username>/apple
Замените местоположение назначения местоположением вашей таблицы. Вы можете проверить это с помощью DESCRIBE FORMATTED tablename
.
Ответ №2:
Вы можете загружать данные в таблицу несколькими способами!! Но убедитесь, что формат таблицы допустим.
-
Сначала поместите конкретную таблицу в расположение таблицы.
Синтаксис: hadoop fs -помещает исходный код_пути в целевое назначение_hive_table_location
Пример: hadoop fs -поместите APPL.csv /user/test.db/apple/APPL.csv
-
После того, как файл находится в файловой системе Hadoop, мы можем загрузить файл в таблицу с помощью команды load в консоли hive
загружает данные по пути ‘/user/test.db/apple/APPL.csv’ в таблицу apple ;
PS: Вы загружаете CSV data.so убедитесь, что таблица имеет правильный формат файла ввода и вывода текста.
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
Ответ №3:
Возможно, это связано с созданием вашей таблицы, у меня была та же ошибка, я решил ее, добавив «СОХРАНЕНО КАК ТЕКСТОВЫЙ ФАЙЛ» в конце запроса hive при создании таблицы
ранее моя таблица была
CREATE TABLE %(output_db)s.%(selected_query_tbl)s
(
query VARCHAR(255)
,ATC_beyond_10_percentage DECIMAL(25,25)
,ATC_rate DECIMAL(25,25)
,block_5_tau DECIMAL(25,25)
,Kendall_tau DECIMAL(25,25)
);
теперь это
CREATE TABLE %(output_db)s.%(selected_query_tbl)s
(
query VARCHAR(255)
,ATC_beyond_10_percentage DECIMAL(25,25)
,ATC_rate DECIMAL(25,25)
,block_5_tau DECIMAL(25,25)
,Kendall_tau DECIMAL(25,25)
)STORED AS TEXTFILE;
Надеюсь, это поможет 🙂
Ответ №4:
Как сказал Випин Сони, речь идет о формате таблицы hive, в которой мы ее сохраняем.
Store as textfile;
решил эту проблему и для меня