我想将多级目录中的数据加载到我的hive表中。但错误是:
hive> LOAD DATA INPATH 'hdfs://hadoop1:9000/logClassify/unLock' INTO
TABLE unLock;
FAILED:SemanticException Line 1:17路径无效 ''hdfs:// hadoop1:9000 / logClassify / unLock'':source包含目录: HDFS:// hadoop1:9000 / logClassify /解锁/ 2016
我已经在hive-site.xml文件中设置了参数:
<property>
<name>mapred.input.dir.recursive</name>
<value>true</value>
</property>
<property>
<name>hive.mapred.supports.subdirectories</name>
<value>true</value>
</property>
我不知道为什么?
答案 0 :(得分:0)
如果你想从本地存储中获取数据
LOAD DATA LOCAL INPATH '/home/data' INTO TABLE table_name;
如果你想从hdfs获取数据,只需删除LOCAL
LOAD DATA LOCAL INPATH '/user/data' INTO TABLE table_name;
答案 1 :(得分:0)
试试这个:
在Hive命令行界面的输入:
set hive.input.dir.recursive=true;
set hive.mapred.supports.subdirectories=true;
set hive.supports.subdirectories=true;
之后,加载数据。例如,如果您有一个级别目录:
LOAD DATA INPATH "/data/testdata/*" INTO TABLE testtable;
对于两级目录:
LOAD DATA INPATH '/data/testdata/* /*' INTO TABLE testtable;
希望这会有所帮助。
答案 2 :(得分:0)
试试这个:
在Hive命令行界面的输入:
设置hive.input.dir.recursive = true;
set hive.mapred.supports.subdirectories = true;
set hive.supports.subdirectories = true;
之后,加载数据。例如,如果您有一个级别目录:
LOAD DATA INPATH“/ data / testdata / ”INTO TABLE testtable; *
对于两级目录:
LOAD DATA INPATH'/ data / testdata / / 'INTO TABLE testtable;
希望这会有所帮助。