Scala 如何在Spark中正确连接两个数据帧
鉴于这些数据集: 产品SMETADADFScala 如何在Spark中正确连接两个数据帧,scala,apache-spark,Scala,Apache Spark,鉴于这些数据集: 产品SMETADADF {'asin': '0006428320', 'title': 'Six Sonatas For Two Flutes Or Violins, Volume 2 (#4-6)', 'price': 17.95, 'imUrl': 'http://ecx.images-amazon.com/images/I/41EpRmh8MEL._SY300_.jpg', 'salesRank': {'Musical Instruments': 207315}, 'ca
{'asin': '0006428320', 'title': 'Six Sonatas For Two Flutes Or Violins, Volume 2 (#4-6)', 'price': 17.95, 'imUrl': 'http://ecx.images-amazon.com/images/I/41EpRmh8MEL._SY300_.jpg', 'salesRank': {'Musical Instruments': 207315}, 'categories': [['Musical Instruments', 'Instrument Accessories', 'General Accessories', 'Sheet Music Folders']]}
productsRatingsDF
{"reviewerID": "AORCXT2CLTQFR", "asin": "0006428320", "reviewerName": "Justo Roteta", "helpful": [0, 0], "overall": 4.0, "summary": "Not a classic but still a good album from Yellowman.", "unixReviewTime": 1383436800, "reviewTime": "11 3, 2013"}
这个功能是:
def findProductFeatures(productsRatingsDF : DataFrame, productsMetadataDF : DataFrame) : DataFrame = {
productsRatingsDF
.withColumn("averageRating", avg("overall"))
.join(productsMetadataDF,"asin")
.select($"asin", $"categories", $"price", $"averageRating")
}
基于asin,这是连接这两个数据集的正确方法吗
下面是我得到的错误:
线程“main”org.apache.spark.sql.AnalysisException中的异常:分组表达式序列为空,''asin`'不是聚合函数。在窗口函数中将“(avg(`totall`)换行为`averageRating`)”,或者在first()中换行'`asin`'(或first_值),如果您不在乎得到的是哪个值。;;
聚合[asin 6、有用7、总体8、评论文本9、评论时间10、评论ID 11、评论姓名12、摘要13、统一评论时间14L、平均值(总体8)99]
+-关系[asin#6、帮助#7、总体#8、评论文本#9、评论时间#10、评论ID#11、评论人姓名#12、摘要#13、unixReviewTime#14L]json
我理解错误了吗?正确的,我加入的方式有错误吗?
我尝试更改.withColumn和.join的顺序,但没有成功。
当我试图根据asin编号将avg(“总体”)输入到列中时,似乎也出现了错误
最终的结果应该是,我得到了一个由4列组成的数据框架“asin”、“categories”、“price”和“averageRating” 问题似乎是:
.withColumn(“平均值”),avg(“总体”)
加入前进行适当的聚合:
df
.groupBy("asin") // your columns
.agg(avg("overall").as("averageRating"))
对于每一个asin,这是。对不起,我忘了解释那部分。