如何从 Spark Dataframe 中的 Row 对象获取值?
Posted
技术标签:
【中文标题】如何从 Spark Dataframe 中的 Row 对象获取值?【英文标题】:How to get a value from the Row object in Spark Dataframe? 【发布时间】:2016-06-23 18:55:23 【问题描述】:为
averageCount = (wordCountsDF
.groupBy().mean()).head()
我明白了
行(平均(计数)=1.6666666666666667)
但是当我尝试时:
averageCount = (wordCountsDF
.groupBy().mean()).head().getFloat(0)
我收到以下错误:
属性错误:getFloat -------------------------------------------------- ------------------------- AttributeError Traceback(最近调用 最后)在() 1 # TODO: 替换为合适的代码 ----> 2 averageCount = (wordCountsDF 3 .groupBy().mean()).head().getFloat(0) 4 5 打印平均数
/databricks/spark/python/pyspark/sql/types.py in getattr(self, 项目)1270 引发 AttributeError(项目)1271 除了ValueError: -> 1272 raise AttributeError(item) 1273 1274 def setattr(self, key, value):
AttributeError: getFloat
我做错了什么?
【问题讨论】:
【参考方案1】:我想通了。这将返回我的值:
averageCount = (wordCountsDF
.groupBy().mean()).head()[0]
【讨论】:
【参考方案2】:这也有效:
averageCount = (wordCountsDF
.groupBy().mean('count').collect())[0][0]
print averageCount
【讨论】:
【参考方案3】:Dataframe 行继承自 namedtuples(来自集合库),因此虽然您可以像上面所做的那样像传统元组一样对它们进行索引,但您可能希望通过其字段名称来访问它。那毕竟是命名元组的点,而且对未来的变化也更加健壮。像这样:
averageCount = wordCountsDF.groupBy().mean().head()['avg(jobs)']
【讨论】:
以上是关于如何从 Spark Dataframe 中的 Row 对象获取值?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 Spark Dataframe 中的 Row 对象获取值?
如何从 Spark DataFrame 中选择稳定的行子集?
Spark SQL:如何使用 JAVA 从 DataFrame 操作中调用 UDF
如何在 Spark 中使用 Python 查找 DataFrame 中的分区数以及如何在 Spark 中使用 Python 在 DataFrame 中创建分区