合併 hdfs 檔案

2021-07-09 14:41:01 字數 764 閱讀 9169



待研究,只做儲存

將hdfs中不同目錄下面的資料合在一起,並存放在指定的目錄中,示例如:

sqoop merge –new-data /test/p1/person –onto /test/p2/person –target-dir /test/merged –jar-file /opt/data/sqoop/person/person.jar –class-name person –merge-key id

其中,–class-name所指定的 class 名是對應於 person.jar 中的 person 類,而 person.jar 是通過 codegen 生成的

--new-datahdfs中存放資料的乙個目錄,該目錄中的資料是希望在合併後能優先保留的,原則上一般是存放越新資料的目錄就對應這個引數。

--ontohdfs中存放資料的乙個目錄,該目錄中的資料是希望在合併後能被更新資料替換掉的,原則上一般是存放越舊資料的目錄就對應這個引數。

--merge-key合併鍵,一般是主鍵id

--jar-file合併時引入的jar包,該jar包是通過codegen工具生成的jar包

--class-name對應的表名或物件名,該class類是包含在jar包中的。

--target-dir合併後的資料在hdfs裡的存放目錄

HDFS合併小檔案

眾所周知,hdfs中過多的小檔案,會給namenode造成很大的壓力,所謂的小檔案,是指遠遠小於檔案塊大小的檔案。在使用hdfs的過程中,應盡量避免生成過多的小檔案。假設存放在本地的資料由很多個小檔案組成,需要上傳到hdfs。一般的做法是在本地使用指令碼 程式先把小檔案合併後再上傳。假設本地有兩個小...

hdfs 多個檔案合併 合併多個檔案遞迴HDFS

在hdfs我的資料夾路徑結構是這樣的 合併多個檔案遞迴hdfs data topicname year 2017 month 02 day 28 hour 00 data topicname year 2017 month 02 day 28 hour 01 data topicname year ...

HDFS的小檔案合併成大檔案

前提 在實際專案中,輸入資料往往是由許多小檔案組成,這裡的小檔案是指小於hdfs系統block大小的檔案 預設128m 然而每乙個儲存在hdfs中的檔案 目錄和塊都對映為乙個物件,儲存在namenode伺服器記憶體中,通常占用150個位元組。由於hadoop擅長儲存大檔案,因為大檔案的元資料資訊比較...