1
所以我在spark中使用了groupByKey函數,但是它沒有被並行化,我可以看到在執行過程中只有1個內核被使用。看來我正在使用的數據不允許並行化。有沒有一種方法可以知道輸入數據是否適合並行化,或者它不是一個合適的RDD?有沒有辦法檢查Spark中的變量是否可並行化?
所以我在spark中使用了groupByKey函數,但是它沒有被並行化,我可以看到在執行過程中只有1個內核被使用。看來我正在使用的數據不允許並行化。有沒有一種方法可以知道輸入數據是否適合並行化,或者它不是一個合適的RDD?有沒有辦法檢查Spark中的變量是否可並行化?
Spark中並行化的單位是'分區'。也就是說,RDD在分區中被分割,並且轉換被並行應用於每個分區。 RDD數據如何在分區間分佈由分區器決定。默認情況下,使用HashPartitioner,對於大多數用途應該可以正常工作。
您可以檢查您的RDD是多少分區拆分爲使用:
rdd.partitions // Array of partitions
你能告訴我一個RDD和pipelinedRDD之間的差別,因爲當我嘗試調用分區方法,我得到的錯誤pipelinedRDD不具備分區功能。 – MetallicPriest 2014-11-08 18:11:08
看起來像Python API沒有'rdd.partitions'方法。嘗試使用'rdd.getNumPartitions'來獲取分區的數量。 – maasg 2014-11-08 18:30:18