Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何在Spark中正确连接两个数据帧_Scala_Apache Spark - Fatal编程技术网

Scala 如何在Spark中正确连接两个数据帧

Scala 如何在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

鉴于这些数据集:

产品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}, '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,这是。对不起,我忘了解释那部分。