2
我如何可以打印具有行和列打印ResultIterable對象的內容
是否有一個內置的函數,該函數列表的pyspark.resultiterable.ResultIterable對象的內容?
我想是這樣dataframe.show()
我如何可以打印具有行和列打印ResultIterable對象的內容
是否有一個內置的函數,該函數列表的pyspark.resultiterable.ResultIterable對象的內容?
我想是這樣dataframe.show()
我面臨同樣的問題,解決它最終,所以讓我分享我做這件事的方法...
讓我們假設我們有兩個RDD。
rdd1 = sc.parallelize([(1,'A'),(2,'B'),(3,'C')])
rdd2 = sc.parallelize([(1,'a'),(2,'b'),(3,'c')])
讓我們對這些RDD進行cogroup以獲得ResultIterable。
cogrouped = rdd1.cogroup(rdd2)
for t in cogrouped.collect():
print t
>>
(1, (<pyspark.resultiterable.ResultIterable object at 0x107c49450>, <pyspark.resultiterable.ResultIterable object at 0x107c95690>))
(2, (<pyspark.resultiterable.ResultIterable object at 0x107c95710>, <pyspark.resultiterable.ResultIterable object at 0x107c95790>))
(3, (<pyspark.resultiterable.ResultIterable object at 0x107c957d0>, <pyspark.resultiterable.ResultIterable object at 0x107c95810>))
現在我們想看看這些ResultIterables裏面有什麼。 我們可以做這樣的:
def iterate(iterable):
r = []
for v1_iterable in iterable:
for v2 in v1_iterable:
r.append(v2)
return tuple(r)
x = cogrouped.mapValues(iterate)
for e in x.collect():
print e
或類似這樣的
def iterate2(iterable):
r = []
for x in iterable.__iter__():
for y in x.__iter__():
r.append(y)
return tuple(r)
y = cogrouped.mapValues(iterate2)
for e in y.collect():
print e
在這兩種情況下,我們會得到相同的結果:
(1, ('A', 'a'))
(2, ('B', 'b'))
(3, ('C', 'c'))
希望,這將有助於在未來的人。
你可以添加一些代碼嗎? –
你有沒有機會接受我的答案? :) – ezamur