gpt4 book ai didi

python - Spark RDD 的模式定义

转载 作者:行者123 更新时间:2023-11-28 18:31:09 24 4
gpt4 key购买 nike

我是 Python Spark 的新手。我有以下 spark 数据框和 json 对象

df = sqlContext.read.load("result.json", format="json")

Json对象:

df.collect() 

[Row(Dorothy=[u'CA', u'F', u'1910', u'220'], Frances=[u'CA', u'F', u'1910', u'134'], Helen=[u'CA', u'F', u'1910', u'239'], Margaret=[u'CA', u'F', u'1910', u'163'], Mary=[u'CA', u'F', u'1910', u'295'])]

当我尝试将字段名称分配给上述值时

df.select(Row("Name" =["State","Gender","Year","Count"])).write.save("result.json",format = 'json')

我收到错误,低于错误。能否请您帮助如何为上述数据定义架构

Py4JError: An error occurred while calling z:org.apache.spark.sql.functions.col. Trace:py4j.Py4JException: Method col([class java.util.ArrayList]) does not exist

最佳答案

加载 json 文档后,您已经有了架构,因此您可以执行 df.printSchema(),这样您就不需要使用 Row 类。

所以你应该能够做类似的事情

df.select(df['State'], df['Gender'], df['Year'], df['Count'])

df.select('State', 'Gender', 'Year', 'Count')

当您使用 Row 类时,您将键值对作为命名参数传递给它,例如

rows = [Row(name='John', age=10)]

它用于构建带有行列表的数据帧,例如

df = sqlContext.createDataFrame(行)

关于python - Spark RDD 的模式定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37245713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com