Не удается загрузить данные в таблицу улья
У меня есть таблица ульев, как показано ниже,
hive> describe eslg_transaction_01;
OK
a1 string
a2 date
a3 string
a4 string
a5 string
a6 bigint
a7 double
a8 double
a9 double
a10 bigint
a11 bigint
a12 bigint
a13 bigint
a14 bigint
a15 bigint
a16 bigint
a17 string
a18 string
Time taken: 0.723 seconds, Fetched: 18 row(s)
Я пытаюсь загрузить данные в эту таблицу, используя
hive> LOAD DATA INPATH '/user/hadoop/data/2502.txt' INTO TABLE eslg_transaction_01;
Я получаю следующую ошибку:
СБОЙ: Строка SemanticException 1:17 Неверный путь ''/user/hadoop/data/2502.txt'': нет файлов, соответствующих пути hdfs://sandbox-hdp.hortonworks.com:8020/user/data/2502.txt
Мои данные присутствуют в местоположении, и я могу видеть это:
[root@sandbox-hdp ~]# hadoop fs -cat /user/hadoop/data/2502.txt | head -5
-200879548|2018-02-18|1485|384672|1787329|1|8.69|0|50|0|0|0|1|0|0|0||NULL
-192188296|2018-02-07|508|321131|9713410|1|0.68|0|30|0|0|0|2|0|0|1|1|2018_303
-198424071|2018-02-15|93|404120|97223|1|2|0.89|0|0|0|1|0|0|0|1|1|2018_4
-185483553|2018-01-29|131|336347|1070990|1|1.3|0.88|0|0|0|0|0|1|0|1|1|2018_3
-205064252|2018-02-23|516|21118|2610945|1|0.89|0.6|0|0|0|0|0|1|0|1|1|2018_5
может кто-нибудь помочь Я застрял здесь. Я новичок в Hadoop / Hive
3 ответа
Выполните нижеуказанные шаги, надеюсь, это сработает.
(1) положить файл в формате hdfs
hadoop fs -put /home/Desktop/2502.txt /user
(2) показать файл в формате hdfs
hadoop fs -ls /user
(3) загрузить данные в таблицу улья
LOAD DATA INPATH '/user/2502.txt' INTO TABLE eslg_transaction_01;
Если вы видите в ошибке, он принимает путь в виде hdfs://sandbox-hdp.hortonworks.com:8020/user/data/2502.txt, который является неправильным, папка hadoop отсутствует в пути. Итак, я считаю, что это должно быть какой-то проблемой разрешения. В противном случае все выглядит правильно. Для вашей работы скопируйте данные в каталог "хранилище" по умолчанию и скопируйте их в таблицу кустов. После загрузки этого файла в таблицу кустов этот файл больше не будет доступен в каталоге "хранилище", поскольку он копируется в каталог таблицы кустов.
Вам не нужно использовать LOAD DATA
если вместо этого вы определите ВНЕШНЮЮ СТОЛ с ЛОКАЦИЕЙ, указывающей на исходный каталог HDFS.
CREATE EXTERNAL TABLE IF NOT EXISTS
eslg_transaction_01
....
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
LOCATION '/user/hadoop/data/'
Тогда любой файл, который вы поместите в этот каталог данных, будет немедленно запрашиваться Hive