将数据从hdfs复制到配置单元中的外部表时出错

5m1hhzi4  于 2021-05-29  发布在  Hadoop
关注(0)|答案(3)|浏览(453)

我正在尝试将数据从hdfs插入到配置单元中的外部表。但低于错误。
错误:

Usage: java FsShell [-put <localsrc> ... <dst>]
Command failed with exit code = 255

命令

hive> !hadoop fs -put /myfolder/logs/pv_ext/2013/08/11/log/data/Sacramentorealestatetransactions.csv
    > ;

编辑时间:

file location : /yapstone/logs/pv_ext/somedatafor_7_11/Sacramentorealestatetransactions.csv

table location : hdfs://sandbox:8020/yapstone/logs/pv_ext/2013/08/11/log/data

我在 hive 里执行命令

!hadoop fs -put /yapstone/logs/pv_ext/somedatafor_7_11/Sacramentorealestatetransactions.csv hdfs://sandbox:8020/yapstone/logs/pv_ext/2013/08/11/log/data

获取错误:

put: File /yapstone/logs/pv_ext/somedatafor_7_11/Sacramentorealestatetransactions.csv does not exist.
Command failed with exit code = 255

请分享你的建议。
谢谢

af7jpaap

af7jpaap1#

这个方法可以帮助你更好的学习。
需要在配置单元中创建表。 hive> CREATE EXTERNAL TABLE IF NOT EXISTS mytable(myid INT, a1 STRING, a2 STRING....) row format delimited fields terminated by '\t' stored as textfile LOCATION hdfs://sandbox:8020/yapstone/logs/pv_ext/2013/08/11/log/data; 将数据从hdfs加载到配置单元表。 hive> LOAD DATA INPATH /yapstone/logs/pv_ext/somedatafor_7_11/Sacramentorealestatetransactions.csv INTO TABLE mytable; 注意:如果将数据从hdfs加载到配置单元(inpath),数据将从hdfs位置移动到配置单元。所以,下一次hdfs位置上的数据将不可用。
检查数据加载是否成功。 hive> SELECT * FROM mytable;

wwodge7n

wwodge7n2#

有两种方法可以将数据加载到外部 Hive table。
方法1:
a) 获取目标的位置 HDFS 的文件夹 Hive 外部表。

hive> desc formatted mytable;

b) 请注意 Location 输出中的属性。说吧,是的 hdfs:///hive-data/mydata c) 然后,将文件从本地磁盘放到 HDFS ```
$ hadoop fs -put /location/of/data/file.csv hdfs:///hive-data/mydata

方法2:
a) 通过此加载数据 `Hive` 命令

hive > LOAD DATA LOCAL INPATH '/location/of/data/file.csv' INTO TABLE mytable;

4xrmg8kj

4xrmg8kj3#

再来一个方法。更改配置单元表位置:

alter table table_name set location='hdfs://your_data/folder';

相关问题