如何使用pyspark从python列表中选择随机文本值?
问题描述
有没有办法使用pyspark从下面的python列表中选择一个随机文本值:-
data_list = ["abc", "xyz", "pqr"]
我知道我可以实现一个pyspark UDF,该UDF将使用随机选项()python函数从python列表中返回一个随机文本值,但是我们在pyspark本身中有没有替代函数来做同样的事情?
执行上述操作的主要原因是通过如上所述从pythondata_list中随机选择元素来创建1000行的巨型数据集。
解决方案
您可以从列表创建数据帧,然后使用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'
相关文章