如何應對SparkSQL DataFrame儲存到hdfs時出現的過多小檔案問題
原因就不解釋了,總之是因為多執行緒並行往hdfs寫造成的(因為每個DataFrame/RDD分成若干個Partition,這些partition可以被並行處理)。
其結果就是一個存下來的檔案,其實是hdfs中一個目錄,在這個目錄下才是眾多partition對應的檔案,最壞的情況是出現好多size為0的檔案。
如果確實想避免小檔案,可以在save之前把DaraFrame的partition設為0: (當然,這必然影響程式效率)
1. 如果是Spark 1.3.x, 可以呼叫函式如下:
【DataFrame2】=【DataFrame1】.repartition(1);
【DataFrame2】.save(path);
2. 如果是Spark 1.4.0, 可以呼叫如下函式:
【DataFrame2】=【DataFrame1】.coalecse(1, false)
相關推薦
如何應對SparkSQL DataFrame儲存到hdfs時出現的過多小檔案問題
原因就不解釋了,總之是因為多執行緒並行往hdfs寫造成的(因為每個DataFrame/RDD分成若干個Partition,這些partition可以被並行處理)。 其結果就是一個存下來的檔案,其實是hdfs中一個目錄,在這個目錄下才是眾多partition對應的檔案,最壞的
navicat連線CentOS的mysql在建立儲存過程時出現1146
場景:以下操作都是客戶機和雲主機之間客戶機用navicat雲主機用mysql原因,我在navicat中嫌礙事,順手把mysql給刪了解決方案如下;service mysqld stoppkill mysqlservice mysqld start這個時候如果在雲伺服器用mys
DataGrid儲存資料時出現錯誤解決辦法.
解決辦法:前臺設定DataGridDataKeyField="ID"錯誤提示:Server Error in '/News' Application. Index was out of range. Must be non-negative and
Mysql建立儲存過程時出現ERROR 1064錯誤
ERROR 1064 (42000):ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versi
Dapper.SimpleCRUD mysql 插入數據時出現的小插曲
錯誤 http 字段 info spa .net respond 圖片 插入 最近想玩一下.net dapper,然後在nuget包中搜索看到了 Dapper.SimpleCRUD ,然後我等好奇心重的小騷年,內心又開始躍躍欲試。 使用sqlserver數據庫時沒有遇到問題
Powershell直接指令碼時出現無法載入檔案因為在此係統中禁止執行指令碼問題的解決方法
在Powershell直接指令碼時會出現: 無法載入檔案 ******.ps1,因為在此係統中禁止執行指令碼。有關詳細資訊,請參閱 "get-help about_signing"。 所在位置 行:1 字元: 17 + E:\Test\test.ps1 <<<< + Cat
SVN版本衝突,COMMIT時出現.MINE等檔案
以commit後 自動生成R.java.mine,R.java.r3368,R.java.r3439為例 因為發生衝突了,別人和你都從3368這個版本對r.java這個檔案進行了修改,別人修改後先提交了形成3439版本,然後你做了提交操作,這時為了避免你覆蓋別人的修改
CTeX 在編譯時出現的圖片檔案無法識別問題
在WinEdt 編輯後,進行編譯生成PDF時,在“Tex” 導航目錄下有TeXfy和PDFTeXify 兩種編譯方式可供選擇: PDFLaTeX 支援jpg, png, bmp和pdf圖片 LaTeX 支援eps圖片你用PDFLaTeX直接生成PDF檔案的話,就不能用ep
解決Flume採集資料時在HDFS上產生大量小檔案的問題
問題:flume指定HDFS型別的Sink時,採集資料至HDFS指定目錄,會產生大量小檔案。問題重現:1、建立flume配置檔案flume-env.sh,:flume配置檔案如下(根據自身需要修改): 因為flume可以配置多種採集方式,每種採集方式對應一個agent配
批量查詢時出現的小問題 總結(注意一下即可,可繞路!!!)
業務需求: 前端傳入批量查詢的陣列引數,後端接收並處理(兩個小知識點隨記,注意一下即可,可繞路!!!) 過程再現: $(function(){ alert(); var arr = new Array(2); arr[0] = "1100456324"; ar
Ubuntu16.04下安裝ROS Kinetic環境配置時出現沒有那個檔案目
剛剛接觸ROS系統,照著網上的教程試著安裝ROS Kinetic,但是在環境配置這一環節總是出現bash: /opt/ros/Kinetic/setup.bash: 沒有那個檔案或目錄,用了網上找的所有方法卻都沒有成功,然後靈機一動發現是bashrc裡的path和實際pat
foxmail看部落格快速開啟兩個網頁時出現的小問題
通過foxmail來看部落格時,當一個部落格開啟時,再很快的開啟另一個部落格時,會出現如下的問題, 右擊“我的電腦”。單擊“屬性”。 在“系統屬性”中單擊“高階”。 在“效能”中單擊“設定”。 在“效能選項”中單擊“資料執行保護”。 單擊“新增”。選擇你的程式(
Flume1.4 相關引數設定,將收集的資料彙總到hdfs,解決許多小檔案問題
參照官方文件,將 flume client 收集的日誌檔案 彙總到 flume sink收集端,然後儲存到hdfs 中,預設會按生成許多小檔案,如圖所示 實際中可能只需要生成一個檔案即可,這就涉及到了幾個相關引數設定如下即可 需要修改的檔案位於 flume/con
sqoop往遠程hdfs寫入數據時出現Permission denied 的問題
工具 port miss sqoop工具 數據 了解 log 如果 原因 猜測出現該問題的原因是sqoop工具用的是執行sqoop工具所用的本地用戶名。 如果遠程hdfs用的用戶是hdfs,那麽我本地還需要建一個名為hdfs的用戶? 其實不需要,只要為用戶增加一個環境變
java中呼叫Oracle儲存過程時,出現異常:java.sql.SQLException: ORA-00928: 缺失 SELECT 關鍵字(已解決)
在java中呼叫Oracle儲存過程時,出現異常:java.sql.SQLException: ORA-00928: 缺失 SELECT 關鍵字 //java程式碼 @Test public void testProcedure(){
問題定位分享(12)Spark儲存文字型別檔案(text、csv、json等)到hdfs時為什麼是壓縮格式的
問題重現 rdd.repartition(1).write.csv(outPath) 寫檔案之後發現檔案是壓縮過的 write時首先會獲取hadoopConf,然後從中獲取是否壓縮以及壓縮格式 org.apache.spark.sql.execution.datasource
hive在執行查詢sql時出現java.lang.IllegalArgumentException: Wrong FS: hdfs://node1:9000/user/hive/warehouse/.
hive在執行查詢sql時出現java.lang.IllegalArgumentException: Wrong FS: hdfs://node1:9000/user/hive/warehouse/test1.db/t1, expected: hdfs://cl
【HDFS】解決hadoop fs -put時出現createBlockOutputStream異常
向HDFS上傳檔案時出現異常: INFO hdfs.DFSClient: Exception in createBlockOutputStream java.io.IOException: Got error, status message , ack with firstBadLink as
因為vim編輯文件未儲存。再次編輯同一個檔案時出現報錯的解決
因為vim編輯文件未儲存。再次編輯同一個檔案時出現報錯的解決 E325: ATTENTIONFound a swap file by the name ".oldboy.txt.swp"owned by: root dated: Sun Dec 23 22:41:46 2018file name: /old
ArrayList資料add時出現覆蓋,及arraylist最後獲取到(儲存到集合中的)資料相同。
@Override public ArrayList<TaskDataPackage> getData() { System.out.println("getData()"); ArrayList<TaskDataPackage> d