我正在尝试将数据从hdfs插入到Hive中的外部表中。但出现错误。
错误:
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
我在蜂巢中
执行命令
!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
请分享您的建议。
谢谢
答案 0 :(得分:0)
有两种方法可以将数据加载到外部Hive
表中。
方法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;
答案 1 :(得分:0)
另一种方法。更改配置单元表位置:
alter table table_name set location='hdfs://your_data/folder';
答案 2 :(得分:0)
此方法可以帮助您更好。
需要在HIVE中创建表。
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加载到HIVE(INPATH),则数据将从HDFS中移出 HIVE的位置。因此,下次数据将不会在HDFS位置上显示。
检查数据是否成功加载。
hive> SELECT * FROM mytable;