无法在hive表中上传数据

时间:2018-03-20 08:22:21

标签: hadoop hive loaddata

我有一个像下面这样的蜂巢表,

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;

我收到以下错误:

  

FAILED:SemanticException Line 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 个答案:

答案 0 :(得分:1)

如果您在错误中看到它正在路径为hdfs://sandbox-hdp.hortonworks.com:8020 / user / data / 2502.txt这是不正确的'hadoop'文件夹在路径中丢失。所以,我认为它应该是一些许可问题。否则它看起来你正在做的是正确的。对于您的工作,将数据复制到默认的“仓库”目录并将其复制到hive表。一旦将该文件加载到hive表,那么该文件将在“仓库”目录中不再可用,因为它将被复制到hive表目录。

答案 1 :(得分:0)

执行以下步骤,我希望,它会起作用。

(1)将文件放入hdfs

hadoop fs -put /home/Desktop/2502.txt /user

(2)在hdfs中显示文件

hadoop fs -ls /user

(3)将数据加载到hive表中

LOAD DATA INPATH '/user/2502.txt' INTO TABLE eslg_transaction_01;

答案 2 :(得分:0)

如果您改为定义一个LOCATION指向原始HDFS目录的EXTERNAL TABLE,则实际上不需要使用LOAD DATA

CREATE EXTERNAL TABLE IF NOT EXISTS 
eslg_transaction_01
.... 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '|'
LOCATION '/user/hadoop/data/'

然后,您放入该数据目录的任何文件都可以被Hive立即查询

相关问题