我已經設置了Hadoop完全分佈式集羣和Apache Hive。我正在將數據從Java代碼加載到配置單元表。 hdfs-site.xml中的複製因子爲2.當我從hadoop fs -put
將文件複製到HDFS時,該文件顯示爲被複制兩次。但是加載到配置單元表中的文件顯示爲有3個副本。Hive加載文件到表副本
是否有任何不同的複製參數爲蜂巢加載文件設置?
我已經設置了Hadoop完全分佈式集羣和Apache Hive。我正在將數據從Java代碼加載到配置單元表。 hdfs-site.xml中的複製因子爲2.當我從hadoop fs -put
將文件複製到HDFS時,該文件顯示爲被複制兩次。但是加載到配置單元表中的文件顯示爲有3個副本。Hive加載文件到表副本
是否有任何不同的複製參數爲蜂巢加載文件設置?
最後我找到了這個行爲的原因。
將文件加載到表之前,我曾經從本地機器複製該文件到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文件的副本。
要設置表格的複製因子並將其加載到HIVE時,您需要在配置單元客戶端上設置以下屬性。
SET dfs.replication=2;
LOAD DATA LOCAL ......;
我正在從eclipse加載數據。這個陳述應該在哪裏運行?在eclipse或Hive CLI中? – rvd
您可以檢查羣集中其他文件的複製嗎? –