Dataframe Row(sum(fld)) 到离散值
Posted
技术标签:
【中文标题】Dataframe Row(sum(fld)) 到离散值【英文标题】:Dataframe Row(sum(fld)) to a discrete value 【发布时间】: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
?
我研究并尝试了很多事情,我完全被困住了。
【问题讨论】:
这能回答你的问题吗? PySpark - Sum a column in dataframe and return results as int 另外,您将其标记为 databricks,但我认为这里没有任何特定于 databricks 的内容,如果您搜索 spark 或 pyspark 而不是指定 databricks,则可以获得更多信息。 根据她在 SO 上的协议接受答案可能是一个想法。 【参考方案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)']
【讨论】:
以上是关于Dataframe Row(sum(fld)) 到离散值的主要内容,如果未能解决你的问题,请参考以下文章
Scala - 如何将 Dataset[Row] 转换为可添加到 Dataframe 的列
从 JavaRDD<Row> 创建的 Spark DataFrame 将所有列数据复制到第一列
scala.collection.immutable.Iterable[org.apache.spark.sql.Row] 到 DataFrame ?错误:使用替代方法重载了方法值 createDat