[英]Android MediaPlayer - how load load multiple files from raw folder
[英]How to load parquet files from hadoopish folder
如果我以這種方式在Java中保存數據幀,則...:
df.write().parquet("myTest.parquet");
...,然后以強光方式保存(包含許多文件的文件夾)。
是否可以將數據幀保存為單個文件? 我嘗試了collect()
,但沒有幫助。
如果不可能,那么我的問題是我應該如何更改從df.write().parquet("myTest.parquet")
創建的df.write().parquet("myTest.parquet")
文件夾中讀取Parquet文件的Python代碼:
load_df = sqlContext.read.parquet("myTest.parquet").where('field1="aaa"').select('field2', 'field3').coalesce(64)
是否可以將數據幀保存為單個文件?
是的,但是您不應該這樣做,因為您可能會對單個JVM施加太大的壓力,這不僅會導致性能下降,還會導致JVM終止,從而導致整個Spark應用程序故障。
因此,是的,有可能,您應該repartition(1)
具有單個分區:
repartition(numPartitions:Int):數據集[T]返回一個具有完全numPartitions分區的新數據集。
我應該如何更改從hadoopish文件夾讀取Parquet文件的Python代碼
從您所謂的“ hadoopish”文件夾中加載數據集完全不必關心內部結構,而應將其視為單個文件(即幕后目錄)。
這是文件存儲方式的內部表示 ,並不影響代碼的加載。
Spark將您的文件寫入一個目錄中,正如您所說的,該文件數量眾多,如果寫入操作成功,它將保存另一個名為_SUCCESS
空文件
我來自scala,但我確實相信python中也有類似的方式
以parquet
或json
或任何您想要的格式直接保存和讀取文件:
df.write.parquet("path")
loaddf = spark.read.parquet("path")
我嘗試了collect(),但沒有幫助。
談到collect
,在此類操作中使用它不是一個好習慣,因為它將數據返回給驅動程序,因此您將失去並行計算的好處,並且如果數據無法容納在內存中,則會導致OutOfMemoryException
是否可以將數據幀保存為單個文件?
在大多數情況下,您實際上不需要這樣做,如果是這樣,請在保存數據Dataframe
之前使用Dataframe
repartition(1)
方法
希望對您有幫助,最好的問候
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.