2016-07-05 5 views
1

Die Datei '/ home/hadoop/_user_active_score_small' existiert genau. Aber wenn load data local wie unten laufen, erhalten eine SemanticException:Ungültiger Pfad wegen Dateiname, wenn Hive lokale Daten laden

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 

Aber cp /home/hadoop/_user_active_score_small /home/hadoop/user_active_score_small und dann load data wieder laufen:

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 

Der Zugriffstyp sind Dateien gleich sind, im selben Verzeichnis:

-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 

Ich weiß nicht, wie das passiert. Ist der Dateiname, der mit '_' beginnt, nicht erlaubt?

Antwort

1

Dateien und Verzeichnisse, die mit der Unterstreichung _ beginnen, werden in MapReduce als versteckt betrachtet. Dies ist wahrscheinlich der Grund für das beobachtete Verhalten.

Wenn man sich FileInputFormat Quellcode können Sie diese finden:

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