【问题标题】:Spark DataFrame to generate beta sampleSpark DataFrame 生成 beta 样本
【发布时间】:2021-05-12 15:57:27
【问题描述】:

我有一个 Spark Dataframe,其中有两列“alpha”和“beta”。

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

我想在此数据框中创建另一列,其中包含来自这两个列的 beta 样本。

我试过了

df = df.withColumn('beta_sample', np.random.beta(F.col('alpha'), F.col('beta')))

但是,这会引发我的错误提示

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

Traceback(最近一次通话最后一次):

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

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

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

df['beta_sample'] = np.random.beta(df['alpha'], df['beta'])

但我希望能够在不转换为熊猫的情况下做到这一点。 有没有办法我可以相应地访问列的每个条目?

【问题讨论】:

    标签: python apache-spark pyspark apache-spark-sql


    【解决方案1】:

    您不能直接在 Spark 数据帧上使用 numpy 函数。您需要使用 UDF:

    import pyspark.sql.functions as F
    import numpy as np
    
    df2 = df.withColumn('beta_sample', F.udf(np.random.beta, 'double')('alpha', 'beta'))
    

    【讨论】:

      猜你喜欢
      • 2023-03-31
      • 2016-05-18
      • 1970-01-01
      • 2023-04-03
      • 2019-08-25
      • 2013-11-17
      • 1970-01-01
      • 2023-04-05
      • 2018-12-14
      相关资源
      最近更新 更多