2015-07-28 48 views
0

我已經設置了Hadoop完全分佈式集羣和Apache Hive。我正在將數據從Java代碼加載到配置單元表。 hdfs-site.xml中的複製因子爲2.當我從hadoop fs -put將文件複製到HDFS時,該文件顯示爲被複制兩次。但是加載到配置單元表中的文件顯示爲有3個副本。Hive加載文件到表副本

是否有任何不同的複製參數爲蜂巢加載文件設置?

+1

您可以檢查羣集中其他文件的複製嗎? –

回答

0

最後我找到了這個行爲的原因。

將文件加載到表之前,我曾經從本地機器複製該文件到HDFS使用:

Configuration config = new Configuration(); 
config.set("fs.defaultFS","hdfs://mycluster:8020"); 
FileSystem dfs = FileSystem.get(config); 
Path src = new Path("D:\\testfile.txt"); 
Path dst = new Path(dfs.getWorkingDirectory()+"/testffileinHDFS.txt"); 
dfs.copyFromLocalFile(src, dst); 

的API copyFromLocalFile()默認情況下使用(雖然我一直保持保持3個副本hdfs-site.xml中的複製因子爲2,但不知道這種行爲的原因)。

現在明確後在代碼中指定複製因子如下:

Configuration config = new Configuration(); 
config.set("fs.defaultFS","hdfs://mycluster:8020"); 
config.set("dfs.replication", "1"); /**Replication factor specified here**/ 
FileSystem dfs = FileSystem.get(config); 
Path src = new Path("D:\\testfile.txt"); 
Path dst = new Path(dfs.getWorkingDirectory()+"/testffileinHDFS.txt"); 
dfs.copyFromLocalFile(src, dst); 

現在只有一個在HDFS文件的副本。

0

要設置表格的複製因子並將其加載到HIVE時,您需要在配置單元客戶端上設置以下屬性。

SET dfs.replication=2; 
LOAD DATA LOCAL ......; 
+0

我正在從eclipse加載數據。這個陳述應該在哪裏運行?在eclipse或Hive CLI中? – rvd

相關問題