gpt4 book ai didi

apache-spark - 无法解析...给定的输入列

转载 作者:行者123 更新时间:2023-12-04 04:51:50 25 4
gpt4 key购买 nike

我正在阅读 O'Reilly 的 Spark: The Definitive Guide book,当我尝试执行简单的 DataFrame 操作时遇到错误。

数据是这样的:

DEST_COUNTRY_NAME,ORIGIN_COUNTRY_NAME,count
United States,Romania,15
United States,Croatia,1
...

然后我用(在 Pyspark 中)阅读它:
flightData2015 = spark.read.option("inferSchema", "true").option("header","true").csv("./data/flight-data/csv/2015-summary.csv")

然后我尝试运行以下命令:
flightData2015.select(max("count")).take(1)

我收到以下错误:
pyspark.sql.utils.AnalysisException: "cannot resolve '`u`' given input columns: [DEST_COUNTRY_NAME, ORIGIN_COUNTRY_NAME, count];;
'Project ['u]
+- AnalysisBarrier
+- Relation[DEST_COUNTRY_NAME#10,ORIGIN_COUNTRY_NAME#11,count#12] csv"

我什至不知道“u”来自哪里,因为它不在我的代码中,也不在数据文件头中。我读到另一个建议,这可能是由标题中的空格引起的,但这在这里不适用。知道要尝试什么吗?

注意:奇怪的是,当我使用 SQL 而不是 DataFrame 转换时,同样的事情会起作用。这有效:
flightData2015.createOrReplaceTempView("flight_data_2015")
spark.sql("SELECT max(count) from flight_data_2015").take(1)

我还可以执行以下操作,并且效果很好:
flightData2015.show()

最佳答案

您的问题是您正在调用内置 max功能,而不是 pyspark.sql.functions.max .

当 python 计算 max("count")在您的代码中,它返回字母 'u' ,这是组成字符串的字母集合中的最大值。

print(max("count"))
#'u'

试试这个:

import pyspark.sql.functions as f
flightData2015.select(f.max("count")).show()

关于apache-spark - 无法解析...给定的输入列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51757433/

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