第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

用火花-csv編寫單個csv文件

用火花-csv編寫單個csv文件

用火花-csv編寫單個csv文件我在用https://github.com/databricks/spark-csv,我試圖寫一個CSV,但不能,它是一個文件夾。需要一個Scala函數(shù),它將接受像路徑和文件名這樣的參數(shù),并編寫那個CSV文件。
查看完整描述

3 回答

?
慕森王

TA貢獻(xiàn)1777條經(jīng)驗 獲得超3個贊

它正在創(chuàng)建一個包含多個文件的文件夾,因為每個分區(qū)都是單獨保存的。如果需要一個輸出文件(仍在文件夾中),則可以repartition(如果上游數(shù)據(jù)很大,但需要洗牌,則首選):

df   .repartition(1)
   .write.format("com.databricks.spark.csv")
   .option("header", "true")
   .save("mydata.csv")

coalesce:

df   .coalesce(1)
   .write.format("com.databricks.spark.csv")
   .option("header", "true")
   .save("mydata.csv")

保存前的數(shù)據(jù)幀:

所有數(shù)據(jù)將寫入mydata.csv/part-00000..在使用此選項之前確保您了解正在發(fā)生的事情,以及將所有數(shù)據(jù)傳輸給單個員工的成本。..如果使用帶有復(fù)制的分布式文件系統(tǒng),數(shù)據(jù)將被多次傳輸-首先獲取到單個工作人員,然后通過存儲節(jié)點分發(fā)。

或者,您可以保留代碼的原樣,并使用通用工具,如catHDFSgetmerge然后簡單地合并所有的部分。


查看完整回答
反對 回復(fù) 2019-07-11
?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗 獲得超12個贊

如果您正在使用HDFS運行SPark,我一直在通過正常編寫CSV文件和利用HDFS進(jìn)行合并來解決這個問題。我是在星火(1.6)直接這樣做的:

import org.apache.hadoop.conf.Configurationimport org.apache.hadoop.fs._def merge(srcPath: String, dstPath: String): Unit =  {
   val hadoopConfig = new Configuration()
   val hdfs = FileSystem.get(hadoopConfig)
   FileUtil.copyMerge(hdfs, new Path(srcPath), hdfs, new Path(dstPath), true, hadoopConfig, null) 
   // the "true" setting deletes the source files once they are merged into the new output}val newData =
    << create your dataframe >>val outputfile = "/user/feeds/project/outputs/subject"  
    var filename = "myinsights"var outputFileName = outputfile + "/temp_" + filename 
var mergedFileName = outputfile + "/merged_" + filenamevar mergeFindGlob  = outputFileName

    newData.write        .format("com.databricks.spark.csv")
        .option("header", "false")
        .mode("overwrite")
        .save(outputFileName)
    merge(mergeFindGlob, mergedFileName )
    newData.unpersist()

我不記得我是從哪里學(xué)到這個把戲的,但它可能對你有用。


查看完整回答
反對 回復(fù) 2019-07-11
?
慕妹3242003

TA貢獻(xiàn)1824條經(jīng)驗 獲得超6個贊

我在這里可能有點晚了,但是.coalesce(1)repartition(1)可能適用于小數(shù)據(jù)集,但大型數(shù)據(jù)集都將被拋到一個節(jié)點上的一個分區(qū)中。這可能會拋出OOM錯誤,或者充其量只能緩慢地處理。

我強烈建議你使用FileUtil.copyMerge()函數(shù)來自HadoopAPI。這將把輸出合并到一個文件中。

編輯-這有效地將數(shù)據(jù)帶給驅(qū)動程序,而不是執(zhí)行者節(jié)點。Coalesce()如果單個執(zhí)行器具有比驅(qū)動程序更多的RAM,就可以了。

編輯2:copyMerge()在Hadoop3.0中被刪除。有關(guān)如何使用最新版本的更多信息,請參見下面的堆棧溢出文章:Hadoop如何在Hadoop3.0中實現(xiàn)CopyMerge


查看完整回答
反對 回復(fù) 2019-07-11
  • 3 回答
  • 0 關(guān)注
  • 613 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號