为什么pyspark.sql下层函数不接受文字col名称和长度函数呢?

问题描述 投票:0回答:1

为什么在下一个示例中,下层函数不接受col名称作为文字,而长度接受呢?

import pyspark.sql.functions as func
df = spark.createDataFrame([('Tom', 80)], ["name", "height"])
df.select (df.name, func.length('name')).show()
df.select (df.name, func.lower('name')).show()

+ ---- + ------------ +|名称|长度(名称)|+ ---- + ------------ +|汤姆| 3 |+ ---- + ------------ +Py4JError:调用z:org.apache.spark.sql.functions.lower时发生错误。跟踪:py4j.Py4JException:方法Lower([class java.lang.String])不存在....

在文档中pyspark.sql.length表示接受列作为参数,而pyspark.sql.lower表示相同。为什么不接受“名称”?

如果我更改为

df.select (df.name, func.lower(func.col('name'))).show()

运行正常

+ ---- + ----------- +|名称|下部(名称)|+ ---- + ----------- +|汤姆|汤姆|+ ---- + ----------- +

有人可以解释我为什么吗?

预先感谢。

pyspark-sql pyspark-dataframes
1个回答
1
投票

我有同样的问题。在谷歌搜索时,我着手解决这个问题:https://issues.apache.org/jira/browse/SPARK-22212

这似乎是一个错误(较小),解决方法似乎是您实际执行的操作。

希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.