spark版本2.4.5
>> from pyspark.sql.functions import col
>> data = [('a',),
('b',)]
>> df = spark.createDataFrame(data, ("col.name",))
>> df.printSchema()
root
|-- col.name: string (nullable = true)
执行该行
>> df.withColumn("col.name.new",col("col.name")).show()
给出这个错误
Traceback (most recent call last):
File "/usr/local/Cellar/apache-spark/2.4.5/libexec/python/pyspark/sql/utils.py", line 63, in deco
return f(*a,**kw)
File "/usr/local/Cellar/apache-spark/2.4.5/libexec/python/lib/py4j-0.10.7-src.zip/py4j/protocol.py", line 328, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o1187.withColumn.
: org.apache.spark.sql.AnalysisException: cannot resolve '`col.name`' given input columns: [col.name]
但这是有效的
>> df.withColumn("col.name.new",col("`col.name`")).show()
+--------+------------+
|col.name|col.name.new|
+--------+------------+
| a| a|
| b| b|
+--------+------------+
根据文件
pyspark.sql.functions.col(col)返回基于给定列名的列。
第一次尝试应该有效。
你知道为什么没有吗?
1条答案
按热度按时间ie3xauqp1#
如果我们用
struct
类型(structtype)。这里我们的目标是获取嵌套字段的值
name
的struct
字段col
:这里我们的目标是得到单个列的值
col.name
: