Python Spark DataFrame生成测试样本

Python Spark DataFrame生成测试样本,python,apache-spark,pyspark,apache-spark-sql,Python,Apache Spark,Pyspark,Apache Spark Sql,我有一个Spark数据框,其中有两列“alpha”和“beta” 这些列的整数值大于或等于 我想在这个数据框架中创建另一个列,其中beta示例来自这两个col 我试过了 df = df.withColumn('beta_sample', np.random.beta(F.col('alpha'), F.col('beta'))) 然而,这让我犯了一个错误 遇到错误: 使用序列设置数组元素 回溯(最近一次呼叫最后一次): 文件“mtrand.pyx”,第1706行,在mtrand.RandomS

我有一个Spark数据框,其中有两列“alpha”和“beta”

这些列的整数值大于或等于

我想在这个数据框架中创建另一个列,其中beta示例来自这两个col

我试过了

df = df.withColumn('beta_sample', np.random.beta(F.col('alpha'), F.col('beta')))
然而,这让我犯了一个错误

遇到错误: 使用序列设置数组元素

回溯(最近一次呼叫最后一次):

文件“mtrand.pyx”,第1706行,在mtrand.RandomState.beta中

ValueError:使用序列设置数组元素

我还没有尝试将spark数据帧转换为pandas数据帧,并尝试类似的方法

df['beta_sample'] = np.random.beta(df['alpha'], df['beta'])
但我希望在没有变成熊猫的情况下也能做到这一点。
有什么方法可以相应地访问该列的每个条目吗?

您不能直接在Spark数据帧上使用numpy函数。您需要使用自定义项:

import pyspark.sql.functions as F
import numpy as np

df2 = df.withColumn('beta_sample', F.udf(np.random.beta, 'double')('alpha', 'beta'))