【问题标题】:Spark SQL bug:DataFrame.withcolumn() could duplicate column already existsSpark SQL 错误:DataFrame.withcolumn() 可能重复列已存在
【发布时间】:2015-05-06 23:22:16
【问题描述】:

创建DataFrame.withcolumn() 时,Spark 开发团队忘记检查列名是否已在使用中。

开头:

val res = sqlContext.sql("select * from tag.tablename where dt>20150501 limit 1").withColumnRenamed("tablename","tablename")
res.columns

显示:

res6: Array[String] = Array(user_id, service_type_id, tablename, dt)

然后

val res1 = res.withColumn("tablename",res("tablename")+1)
res1.columns

显示:

res7: Array[String] = Array(user_id, service_type_id, tablename, dt, tablename)

顺便说一句,res1.show 有效。

BUG 从这里开始:

res1.select("tablename")

org.apache.spark.sql.AnalysisException: Ambiguous references to tablename: (tablename#48,List()),(tablename#53,List());

【问题讨论】:

  • 这应该在 Spark 的 JIRA 中报告,而不是 StackOverflow
  • 他们已经修复了它——我已经链接了相关的 JIRA 作为答案。但是,这是一个很好的建议:我发现 Spark SQL 团队对我提交的请求非常敏感。搜索在 ASF JIRA 网站上也很有效——这是我在 dataframe withcolumn 上搜索时的第二个结果。 (实际上,它响了铃,因为我注意到前段时间签入正在修复它。)

标签: apache-spark apache-spark-sql


【解决方案1】:

这已被报告为SPARK-6635。它已经被修复,并且似乎将在 Spark 1.4.0 中发布。

【讨论】:

  • 找到另一个并提交给 JIRA 但几天后没有回复。现在该怎么办?
  • 是哪一个?我没有这种经验,所以我不确定。您可以尝试使用 Spark 开发人员邮件列表来尝试让某人感兴趣。见here。
  • SPARK-7428。不确定我是否以正确的方式提交此 jira
猜你喜欢
  • 2021-10-04
  • 2019-12-14
  • 2020-08-21
  • 2016-07-02
  • 2021-03-08
  • 2019-01-19
  • 1970-01-01
  • 2021-02-02
  • 1970-01-01
相关资源
最近更新 更多