Не удается загрузить данные в таблицу улья

У меня есть таблица ульев, как показано ниже,

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

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