文件'/ 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允许以'_'开头的文件名?
答案 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(".");
}
};