pyspark数据框的区分大小写的列删除操作?
Posted
技术标签:
【中文标题】pyspark数据框的区分大小写的列删除操作?【英文标题】:Case sensitive column drop operation for pyspark dataframe? 【发布时间】: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()
操作的特定方式(不是全局/持久设置) )。
【问题讨论】:
【参考方案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 SQLContext
和 sqlContext = SQLContext(sparkSession.sparkContext)
才能使用此答案使用的 sqlContext
对象。
以上是关于pyspark数据框的区分大小写的列删除操作?的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server:为啥不区分大小写的列上的 SELECT 比区分大小写的列更快?
由于 ApplyMapping 不区分大小写,如何确定我需要哪些列?