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

时间:2019-11-18 09:43:22

标签: pyspark-sql pyspark-dataframes

在下一个示例中,为什么下层函数不接受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()

+----+------------+
|name|length(name)|
+----+------------+
| Tom|           3|
+----+------------+

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

在文档pyspark.sql.length中,说接受一列作为参数,而pyspark.sql.lower中说。为什么不接受“姓名”?

如果我换

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

运行正常

+----+-----------+
|name|lower(name)|
+----+-----------+
| Tom|        tom|
+----+-----------+

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

提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

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

希望这会有所帮助。