【问题标题】:Dataframe Row(sum(fld)) to a discrete valueDataframe Row(sum(fld)) 到离散值
【发布时间】:2020-05-07 23:06:35
【问题描述】:

我有这个:

df = sqlContext.sql(qry)
df2 = df.withColumn("ext", df.lvl * df.cnt)
ttl = df2.agg(F.sum("ext")).collect()

返回这个:

[Row(sum(ext)=1285430)]

如何在不作为列表 Row(sum()) 的情况下将其简化为谨慎的值 1285430

我研究并尝试了很多事情,我完全被困住了。

【问题讨论】:

  • 另外,您将其标记为 databricks,但我认为这里没有任何特定于 databricks 的内容,如果您搜索 spark 或 pyspark 而不是指定 databricks,则可以获得更多信息。
  • 根据她在 SO 上的协议接受答案可能是一个想法。

标签: dataframe


【解决方案1】:

无需收集:

n = ...your transformation logic and agg... .first().getInt(0)

【讨论】:

    【解决方案2】:

    访问第一行,然后将第一个元素作为 int 获取。

    df2.agg(F.sum("ext")).collect()(0).getInt(0)

    查看文档:Spark ScalaDoc

    【讨论】:

      【解决方案3】:

      也可以 df.collect()[0][0] -or- df.collect()[0]['sum(ext)']

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-05-02
        • 2017-02-12
        • 1970-01-01
        • 1970-01-01
        • 2018-06-25
        • 2011-02-05
        • 2022-09-27
        相关资源
        最近更新 更多