【问题标题】:Case sensitive column drop operation for pyspark dataframe?pyspark数据框的区分大小写的列删除操作?
【发布时间】:2019-10-11 01:50:48
【问题描述】:

通过一些简短的测试,pyspark 数据帧的列删除功能似乎不区分大小写,例如。

from pyspark.sql import SparkSession
from pyspark.sql.functions import *
import sys

sparkSession = SparkSession.builder.appName("my-session").getOrCreate()

dff = sparkSession.createDataFrame([(10,123), (14,456), (16,678)], ["age", "AGE"])

>>> dff.show()
+---+---+
|age|AGE|
+---+---+
| 10|123|
| 14|456|
| 16|678|
+---+---+

>>> dff.drop("AGE")
DataFrame[]

>>> dff_dropped = dff.drop("AGE")
>>> dff_dropped.show()
++
||
++
||
||
||
++

"""
What I'd like to see here is:
+---+
|age|
+---+
| 10|
| 14|
| 16|
+---+
"""

有没有办法以区分大小写的方式删除数据框列? (在 spark JIRA discussions 中看到了一些与此类相关的 cmets,但正在寻找仅适用于 drop() 操作的特定方式(不是全局/持久设置) )。

【问题讨论】:

    标签: pyspark apache-spark-sql


    【解决方案1】:
    #Add this before using drop
    sqlContext.sql("set spark.sql.caseSensitive=true")
    

    如果您有两列有 同名

    【讨论】:

    • 这是持久性的吗(即,我是否需要在 drop() 之后的行中调用 sqlContext.sql("set spark.sql.caseSensitive=false") 才能使数据帧操作像以前一样运行)?
    • 请注意任何找到此答案的人:从我在原始帖子中的代码中,您还需要执行 from pyspark.sql import SQLContextsqlContext = SQLContext(sparkSession.sparkContext) 才能使用此答案使用的 sqlContext 对象。
    猜你喜欢
    • 2021-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-01
    • 2014-01-19
    相关资源
    最近更新 更多