簡體   English   中英

如何在 Python 中的 RDD 中執行逐元素減法

[英]How can I perform element-wise subtraction in a RDD in Python

我有一個像這樣的 RDD:

rdd1 = sc.parallelize([1,0,1,1,1,0], [0,0,1,0,0,1])

我需要這樣的 output

[1,0,0,1,1,1]

所以逐元素減法,然后減去絕對值。 我仍然是 pyspark 的初學者。任何幫助將不勝感激。因為,我需要降低計算量,轉換為 dataframe 是不可取的。

在純 python 中,它將是:

a, b = [1, 0, 1, 1, 1, 0], [0, 0, 1, 0, 0, 1]

[x - y for x, y in zip(a, b)]
Out[2]: [1, 0, 0, 1, 1, -1]

如果你想在 pyspark 中實現相同的效果,這取決於你是使用列、行還是 arrays...這里是一種在列中使用數據的解決方案:

# based on above a and b
from pyspark.sql import functions as F

df = spark.createDataFrame(zip(a, b), ["a", "b"])

df.show()
+---+---+                                                                       
|  a|  b|
+---+---+
|  1|  0|
|  0|  0|
|  1|  1|
|  1|  0|
|  1|  0|
|  0|  1|
+---+---+

df.withColumn("c", F.col("a") - F.col("b")).show()
+---+---+---+                                                                   
|  a|  b|  c|
+---+---+---+
|  1|  0|  1|
|  0|  0|  0|
|  1|  1|  0|
|  1|  0|  1|
|  1|  0|  1|
|  0|  1| -1|
+---+---+---+

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM