无法在配置单元中上传数据 table
Not able to upload data in hive table
我有一个蜂巢 table 如下所示,
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)
我正在尝试使用
将数据上传到此 table
hive> LOAD DATA INPATH '/user/hadoop/data/2502.txt' INTO TABLE eslg_transaction_01;
我收到以下错误:
FAILED: SemanticException Line 1:17 Invalid path ''/user/hadoop/data/2502.txt'': No files matching path 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
的新手
执行以下步骤,我希望它会起作用。
(1) 将文件放入 hdfs
hadoop fs -put /home/Desktop/2502.txt /user
(2) 在 hdfs 中显示文件
hadoop fs -ls /user
(3) 将数据加载到配置单元中table
LOAD DATA INPATH '/user/2502.txt' INTO TABLE eslg_transaction_01;
如果您在错误中看到路径为 hdfs://sandbox-hdp.hortonworks.com:8020/user/data/2502.txt,这是不正确的 'hadoop'路径中缺少文件夹。所以,我相信这应该是许可问题。否则看起来你在做什么是正确的。对于您的工作,将数据复制到默认 'warehouse' 目录并将其复制到配置单元 table。将该文件加载到配置单元 table 后,该文件将在 'warehouse' 目录中不再可用,因为它已复制到配置单元 table 目录。
如果您定义一个 EXTERNAL TABLE 并且 LOCATION 指向原始 HDFS 目录,那么您实际上并不需要使用 LOAD DATA
。
CREATE EXTERNAL TABLE IF NOT EXISTS
eslg_transaction_01
....
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
LOCATION '/user/hadoop/data/'
然后您放入该数据目录的任何文件都将立即被 Hive 查询
我有一个蜂巢 table 如下所示,
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)
我正在尝试使用
将数据上传到此 tablehive> LOAD DATA INPATH '/user/hadoop/data/2502.txt' INTO TABLE eslg_transaction_01;
我收到以下错误:
FAILED: SemanticException Line 1:17 Invalid path ''/user/hadoop/data/2502.txt'': No files matching path 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
的新手执行以下步骤,我希望它会起作用。
(1) 将文件放入 hdfs
hadoop fs -put /home/Desktop/2502.txt /user
(2) 在 hdfs 中显示文件
hadoop fs -ls /user
(3) 将数据加载到配置单元中table
LOAD DATA INPATH '/user/2502.txt' INTO TABLE eslg_transaction_01;
如果您在错误中看到路径为 hdfs://sandbox-hdp.hortonworks.com:8020/user/data/2502.txt,这是不正确的 'hadoop'路径中缺少文件夹。所以,我相信这应该是许可问题。否则看起来你在做什么是正确的。对于您的工作,将数据复制到默认 'warehouse' 目录并将其复制到配置单元 table。将该文件加载到配置单元 table 后,该文件将在 'warehouse' 目录中不再可用,因为它已复制到配置单元 table 目录。
如果您定义一个 EXTERNAL TABLE 并且 LOCATION 指向原始 HDFS 目录,那么您实际上并不需要使用 LOAD DATA
。
CREATE EXTERNAL TABLE IF NOT EXISTS
eslg_transaction_01
....
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '|'
LOCATION '/user/hadoop/data/'
然后您放入该数据目录的任何文件都将立即被 Hive 查询