当hive在本地路径中加载数据时,因文件名无效

时间:2016-07-05 05:59:06

标签: hadoop hive

文件'/ home / hadoop / _user_active_score_small'完全存在。但是当如下运行load data local时,得到一个SemanticException:

hive> load data local  inpath '/home/hadoop/_user_active_score_small' overwrite into table user_active_score_tmp ;
FAILED: SemanticException Line 1:24 Invalid path ''/home/hadoop/_user_active_score_small'': No files matching path file:/home/hadoop/_user_active_score_small

但是,cp /home/hadoop/_user_active_score_small /home/hadoop/user_active_score_small,然后再次运行load data

hive> load data local  inpath '/home/hadoop/user_active_score_small' overwrite into table user_active_score_tmp ;
Loading data to table user_bg_action.user_active_score_tmp
OK
Time taken: 0.368 seconds

文件的访问类型相同,位于同一目录中:

-rw-rw-r-- 1 hadoop hadoop 614 7月   5 13:49 _user_active_score_small
-rw-rw-r-- 1 hadoop hadoop 614 7月   5 11:48 user_active_score_small

我不知道这是怎么发生的。是不是hive允许以'_'开头的文件名?

1 个答案:

答案 0 :(得分:1)

以下划线_开头的文件和目录在MapReduce中被认为是隐藏的,这可能是观察到的行为的原因。

如果查看FileInputFormat源代码,可以找到:

protected static final PathFilter hiddenFileFilter = new PathFilter(){
  public boolean accept(Path p){
    String name = p.getName(); 
    return !name.startsWith("_") && !name.startsWith("."); 
  }
};