0
我需要檢索每個數據幀分區的第一個元素。 我知道我需要使用mapPartitions,但我不清楚如何使用它。每個數據幀分區的第一個元素Spark 2.0
注意:我正在使用Spark2.0,對數據幀進行排序。
我需要檢索每個數據幀分區的第一個元素。 我知道我需要使用mapPartitions,但我不清楚如何使用它。每個數據幀分區的第一個元素Spark 2.0
注意:我正在使用Spark2.0,對數據幀進行排序。
我相信它應該看起來像以下:
import org.apache.spark.sql.catalyst.encoders.RowEncoder
...
implicit val encoder = RowEncoder(df.schema)
val newDf = df.mapPartitions(iterator => iterator.take(1))
這將花費1元,從數據幀中的每個分區。然後你就可以收集所有數據到驅動程序即:
nedDf.collect()
這將返回與多家等於你的分區數元素的數組。
UPD爲了更新,以支持星火2.0
我在看的方法在這裏簽名http://spark.apache.org/docs/latest/api/java/org/apache/spark/sql /Dataset.html和奇蹟你不需要編碼器作爲此方法調用中的第二個參數? – MaxNevermind
嘗試此解決方案將返回「無法找到存儲在數據集中的類型的編碼器。即使使用spar.implicits,原始類型(Int,String等)和產品類型錯誤仍然存在 – syl
用foreachPartition替換mapPartition但它返回一個空的列表() – syl