如何使用 pyspark 从 python 列表中选择随机文本值?

Posted

技术标签:

【中文标题】如何使用 pyspark 从 python 列表中选择随机文本值?【英文标题】:How to select a random text value from a python list using pyspark? 【发布时间】:2020-05-13 13:43:13 【问题描述】:

有没有办法使用 pyspark 从以下 python 列表中选择一个随机文本值:-

data_list = ["abc", "xyz", "pqr"]

我知道我可以实现一个 pyspark UDF,它将使用 random.choice() python 函数从 python 列表中返回一个随机文本值,但是我们在 pyspark 本身中有一个替代函数来做同样的事情吗?

这样做的主要原因是通过从上面提到的python data_list中随机选择元素来创建一个1000行的巨大数据集。

【问题讨论】:

python 列表的随机元素,还是 pyspark RDD 或 sql DataFrame 中的随机元素? python 列表中的随机元素。编辑了问题。 【参考方案1】:

您可以从列表中创建数据框,然后使用rand 函数我们可以从列表中生成随机数据。

Example:

data_list = ["abc", "xyz", "pqr"]

from pyspark.sql.functions import *

spark.createDataFrame([(k,) for k in data_list]).orderBy(rand()).limit(1).show()
#+---+
#| _1|
#+---+
#|pqr|
#+---+

spark.createDataFrame([(k,) for k in data_list]).orderBy(rand()).limit(1).show()
#+---+
#| _1|
#+---+
#|xyz|
#+---+

#to get string
spark.createDataFrame([(k,) for k in data_list]).orderBy(rand()).limit(1).rdd.map(lambda x:x['_1']).collect()[0]
#u'abc'

【讨论】:

以上是关于如何使用 pyspark 从 python 列表中选择随机文本值?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 pyspark 从列表中获取最后一项?

如何将 python 列表添加到 pyspark 列? [复制]

如何在 Pyspark 的动态列列表中转义列名

Pyspark:从随机项目函数创建一个集合

在 zeppelin 中使用从 %pyspark 到 %python 的 Dataframe

Pyspark 将 json 数组转换为数据帧行