Hive:从多级目录加载数据

时间:2016-09-23 08:52:20

标签: hive

我想将多级目录中的数据加载到我的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>

我不知道为什么?

3 个答案:

答案 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;

希望这会有所帮助。