【问题标题】:pyspark.sql.utils.AnalysisException: Reference 'title' is ambiguous, could be: title, titlepyspark.sql.utils.AnalysisException:参考“标题”不明确,可能是:标题,标题
【发布时间】:2021-12-05 09:13:23
【问题描述】:

我正在使用胶水版本 3.0、python 版本 3、火花版本 3.1。 我正在从 xml 中提取数据,创建数据框并将数据以 csv 格式写入 s3 路径。 在编写数据帧之前,我使用 show(1) 打印了数据帧的模式和 1 条记录。到目前为止一切都很好。 但是在将其写入 s3 位置的 csv 文件时,发现错误重复列,因为我的数据框有 2 列,即“标题”和“标题”。 尝试添加一个新列 title2 ,该列将包含标题内容,并考虑稍后使用以下命令删除标题

从 pyspark.sql 导入函数为 f df=df.withcoulumn('title2',f.expr("title")) 但出现错误 引用“标题”不明确,可能是:标题、标题 试过 df=df.withcoulumn('title2',f.col("title")) 得到同样的错误。 请任何帮助或解决此问题的方法..

【问题讨论】:

    标签: amazon-web-services pyspark apache-spark-sql aws-glue


    【解决方案1】:

    默认spark不区分大小写,我们可以通过将spark.sql.caseSensitive设置为True来使spark区分大小写。

    from pyspark.sql import functions as f
    
    df = spark.createDataFrame([("CaptializedTitleColumn", "title_column", ), ], ("Title", "title", ))
    
    spark.conf.set('spark.sql.caseSensitive', True)
    
    df.withColumn('title2',f.expr("title")) .show()
    

    输出

    +--------------------+------------+------------+
    |               Title|       title|      title2|
    +--------------------+------------+------------+
    |CaptializedTitleC...|title_column|title_column|
    +--------------------+------------+------------+
    

    【讨论】:

    • 感谢您的回复。在 AWS 中,我使用以下设置设置配置:Open Glue> 作业 > 编辑作业> 脚本库和作业参数(可选)> 底部附近的作业参数设置以下内容:键:--conf 值:spark.sql。 caseSensitive=True
    猜你喜欢
    • 1970-01-01
    • 2015-10-20
    • 1970-01-01
    • 2014-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-20
    相关资源
    最近更新 更多