【发布时间】:2021-11-20 19:21:22
【问题描述】:
假设有这个 Pyspark 数据框:
x = np.random.randint(1, 100, 1000)
y = np.random.randint(1, 100, 1000)
z = np.random.randint(1, 100, 1000)
df = pd.DataFrame({'x': x, 'y': y, 'z': z})
spark_df = spark.createDataFrame(df)
假设有这个值列表:
lst = [10, 20, 30]
我想检索 spark_df 的所有 3 (=len(lst)) 行,以便 lst 和 spark_df.x 的每个值之间的差异最小。我想将这三个值检索为 spark 数据框。例如:
+---+---+---+
| x| y| z|
+---+---+---+
| 11| 32| 84|
| 22| 12| 38|
| 29| 14| 12|
+---+---+---+
在这种情况下:
-
11是最接近spark_df.x值的10 -
22是最接近spark_df.x值的20 -
29是最接近spark_df.x的值30
如何在 Pyspark 3+ 中实现这个结果?
注意:这只是一个玩具示例,值列表可能有数千个。
【问题讨论】:
-
如果您询问如何改进现有的工作代码,您应该询问代码审查。此类问题在 Stack Overflow 上是题外话,因为它们是基于意见的。
-
您在问题中包含了一个(用您自己的话来说是“坏”的)解决方案。因此,如果不是“更好”的解决方案,您还不清楚您要求什么,但您不会费心用具体、客观的术语解释您想要什么。您提供的解决方案有什么问题?您希望您的解决方案实现当前错误的具体指标是什么?当有人说你的问题有问题时,不要嘲笑;而是解决问题。
-
你不应该仅仅因为我发表了评论就认为我是第一个投反对票的人。除此之外,我的第二条评论与第一条评论的内容相同,只是更详细地解释了help center 为您说的内容。
标签: python dataframe apache-spark pyspark