अगले उदाहरण में निचला कार्य कॉल नाम को शाब्दिक और लंबाई के रूप में क्यों स्वीकार नहीं करता है?

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|
+----+-----------+

क्या कोई मुझे समझा सकता है क्यों?

अग्रिम में धन्यवाद।

0
Jose Ventura 18 नवम्बर 2019, 12:43

1 उत्तर

सबसे बढ़िया उत्तर

मेरी भी यही समस्या थी। Googling के दौरान मैं इस मुद्दे पर पहुंचा: https://issues.apache.org/jira/ ब्राउज़/स्पार्क-22212.

यह एक बग (मामूली) प्रतीत होता है और समाधान वही प्रतीत होता है जो आपने वास्तव में किया था।

उम्मीद है ये मदद करेगा।

1
Asanga 19 फरवरी 2020, 03:47