我正在尝试使用
加入2个数据帧def join(right: Dataset[_], usingColumns: Seq[String]): DataFrame
语法。两个数据帧都具有必要的连接列(例如col1和col2)。但是有一个错误,说
'using columns ['col1,'col2] can not be resolved given input columns: [col1, col2, col3, ...]'
这个代码在Spark 1.6.x中有效。其他人都面临这个问题?帮助!
更新 更多的研究使我分离出以下代码所说明的问题。它只是示例代码,但我的实际代码遵循相同的模式 -
// reading from Hive .. the data is stored in Parquet format in Amazon S3
val d1 = spark.sql("select * from <hivetable> where companyid=3599")
val df1 = d1.groupBy("companyid","loyaltycardnumber")
.agg(avg("totalprice").as("avgtotalprice"))
val df2 = d1.groupBy("companyid","loyaltycardnumber")
.agg(avg("itemcount").as("avgqty"))
df1.join(df2, Seq("companyid","loyaltycardnumber")) gives error -
org.apache.spark.sql.AnalysisException: using columns ['companyid,'loyaltycardnumber] can
not be resolved given input columns: [companyid, loyaltycardnumber, avgtotalprice, avgqty];
我需要将初始DataFrame(d1)拆分为多个然后将它们连接起来的原因是因为在两个不同的子帧上执行了大量复杂的计算(df1和df2)
更新 更多funkiness - 如果在上面的代码中,我使用spark.read.parquet()而不是spark.sql()加载数据框..相同的代码可以工作。