2017-05-12 116 views
1

我們有很多日誌,我們希望通過一些處理獲取有意義的數據。這些日誌文件非常龐大,結果也很大。pyspark rdd有沒有分頁?

我們已經建立了火花轉換來完成spark集羣中所需的工作。 經過所有不適合驅動程序內存的轉換後,我有大量數據。因此,做一個rdd.collect()失敗。

是否有任何分頁在rdd中我們可以使用哪種動作? 有些東西像SQL中的限制。「SELECT * FROM table LIMIT 15,10」

或任何建議如何處理這種情況?

+0

如果結果如此之大,我只會將它寫入磁盤,最簡單的一個csv文件(只是谷歌它)。但也許我錯過了一些東西。乾杯。 – lrnzcig

回答

0

在大多數文檔和文章中,我看到人們討論'在Spark和RDD中不支持偏移量'。關於在Spark中支持OFFSET的一些討論可以從舊的火花郵件鏈here中找到。而且,在分佈式系統中,抵消訪問可能會非常昂貴。如果是分頁,我們感興趣的是我們可以通過用索引過濾RDD來實現它。索引可以通過zipWithIndex()或zipWithUniqueId()documentation動作獲得。在討論herehere中給出了類似的答案。 下面給出SQL和Spark等價物。

SQL

select * from person limit 10, 10 

星火

result = rdd.zipWithIndex().filter(x => { x._2 >= 10 && x._2 < 20}).collect() 

希望能對有類似的情況有用的人。