Spark SQL bug:DataFrame.withcolumn()可能重复列已经存在

时间:2015-05-06 12:53:46

标签: apache-spark apache-spark-sql

创建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());

1 个答案:

答案 0 :(得分:2)

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