- 有效的鍵值對如果我有一個RDD,我該如何理解這些數據是關鍵:值 格式?有沒有找到相同的方法 - 類似 類型(對象)告訴我一個對象的類型。我試過
print type(rdd.take(1))
,但它只是說<type 'list'>
。 - 比方說,我有一個數據,如
(x,1),(x,2),(y,1),(y,3)
,我使用groupByKey
並得到(x,(1,2)),(y,(1,3))
。有沒有辦法將x和y是鍵的值定義爲(1,2)
和(1,3)
?或者一個密鑰必須是單個值?我注意到,如果我使用reduceByKey
和sum
函數來獲取((x,3),(y,4))
則變得更容易定義這個數據作爲鍵值對
回答
Python是一種動態類型語言和PySpark不使用任何特殊的數據鍵入鍵值對。爲一個對象的唯一要求被認爲有效的數據爲PairRDD
操作是,它可以如下解壓縮:
k, v = kv
通常你可以使用一個兩個元件tuple
由於其語義(固定大小的不可變的對象),並類似於Scala Product
類。但是,這僅僅是一個慣例,沒有什麼阻止你是這樣的:
key_value.py
class KeyValue(object):
def __init__(self, k, v):
self.k = k
self.v = v
def __iter__(self):
for x in [self.k, self.v]:
yield x
from key_value import KeyValue
rdd = sc.parallelize(
[KeyValue("foo", 1), KeyValue("foo", 2), KeyValue("bar", 0)])
rdd.reduceByKey(add).collect()
## [('bar', 0), ('foo', 3)]
,並任意類表現得像一個鍵值。所以再一次,如果某件東西能夠正確解包爲一對對象,那麼它是一個有效的鍵值。實施__len__
和__getitem__
魔術方法也應該起作用。可能最優雅的處理方法是使用namedtuples
。
也type(rdd.take(1))
返回list
長度n
所以它的類型將永遠是相同的。
我正在向您學習。但是我仍然對某件事感到困惑。無論出於什麼原因,我使用'groupByKey',我會得到'[('bar',(0)),('foo',(1,2))]'...現在我可以使用' rdd.map(lambda x:(x [0],len(x [1]))'?我知道使用'countByKey'也可以做同樣的事情,但我想使用'groupByKey' – user2543622
'(0)'不是一個有效的'tuple'字面值。它只是'0'。否則就是這樣。 – zero323
- 1. 如何確定在給定的對象在Javascript中的對象?
- 2. 如何序列化pyspark GroupedData對象?
- 3. 確定對象
- 4. 如何確定Request.Form對象有多大?
- 5. 如何確定對象是否爲PORO?
- 6. 如何確定命令輸出對象?
- 7. 如何確定C#對象的大小
- 8. 如何從Connection對象中確定DBMS
- 9. 如何正確綁定到子對象?
- 10. pyspark:使用對象屬性
- 11. 錯誤「海峽」對象在PySpark
- 12. 如何確定對象圖中的哪個對象導致SerializationException
- 13. Java:如何確定對象數組中的對象的類型?
- 14. 如何確定何時在OpenGL中繪製對象?
- 15. 我如何在大量對象中精確定位循環對象引用?
- 16. 如何在pyspark進行年齡綁定?
- 17. 如何高效,正確地在對象中插入對象
- 18. 確定對象的鑄造
- 19. 確定數組或對象
- 20. 對象不正確定位
- 21. 確定對象的類別
- 22. 角對象不確定
- 23. 確定誰握住對象
- 24. 對象字面不確定
- 25. VueFire對象不確定
- 26. 如何在運行時確定對象的基礎類型?
- 27. 我如何確定在鼠標位置的對象類(Unity3d)
- 28. 如何在運行時確定一個C++對象的內存
- 29. 不確定如何在opengl中旋轉對象2
- 30. 如何獲得在類中確定的對象的實例
1.'rdd.first()' 2.請澄清。 'groupByKey'通常用於你最終需要整個列表的情況。 –
1.不會'rdd.first()'返回我只是第一個數據點?我想知道數據是否是鍵值格式。 2.是的,我用'groupByKey'來獲取整個數據,但是我想用鍵值格式 – user2543622
你想把它作爲地圖嗎?那麼collectAsMap呢? 首先你會得到一個元組,你是什麼意思的鍵值格式?你期望什麼樣的類型? –