为什么pyspark.sql下层函数不接受文字列名和长度函数呢?
Why pyspark.sql lower function not accept literal col name and length function do?
为什么在下一个例子中 lower 函数不接受 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 sais that accept a column as parameter and the pyspark.sql.lower 说的一样。为什么不接受'name'?
如果我换
df.select (df.name, func.lower(func.col('name'))).show()
运行 好的
+----+-----------+
|name|lower(name)|
+----+-----------+
| Tom| tom|
+----+-----------+
谁能解释一下为什么?
提前致谢。
我遇到了同样的问题。在谷歌搜索时,我发现了这个问题:https://issues.apache.org/jira/browse/SPARK-22212.
这似乎是一个错误(小错误),解决方法似乎是您实际所做的。
希望这对您有所帮助。
为什么在下一个例子中 lower 函数不接受 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 sais that accept a column as parameter and the pyspark.sql.lower 说的一样。为什么不接受'name'?
如果我换
df.select (df.name, func.lower(func.col('name'))).show()
运行 好的
+----+-----------+ |name|lower(name)| +----+-----------+ | Tom| tom| +----+-----------+
谁能解释一下为什么?
提前致谢。
我遇到了同样的问题。在谷歌搜索时,我发现了这个问题:https://issues.apache.org/jira/browse/SPARK-22212.
这似乎是一个错误(小错误),解决方法似乎是您实际所做的。
希望这对您有所帮助。