我有2个数据帧加载了以下结构。
我的第一个数据框叫做dfBooks。
+----------+--------------------+--------------------+-------------------+--------------------+--------------------+--------------------+--------------------+
| ISBN| Book-Title| Book-Author|Year-Of-Publication| Publisher| Image-URL-S| Image-URL-M| Image-URL-L|
+----------+--------------------+--------------------+-------------------+--------------------+--------------------+--------------------+--------------------+
|0195153448| Classical Mythology| Mark P. O. Morford| 2002|Oxford University...|http://images.ama...|http://images.ama...|http://images.ama...|
|0002005018| Clara Callan|Richard Bruce Wright| 2001|HarperFlamingo Ca...|http://images.ama...|http://images.ama...|http://images.ama...|
我的第二个名为dfBooks_Rating。
+-------+----------+-----------+
|User-ID| ISBN|Book-Rating|
+-------+----------+-----------+
| 276725|034545104X| 0|
| 276726|0155061224| 5|
| 276727|0446520802| 0|
| 276729|052165615X| 3|
| 276729|0521795028| 6|
| 276733|2080674722| 0|
| 276736|3257224281| 8|
| 276737|0600570967| 6|
| 276744|038550120X| 7|
| 276745| 342310538| 10|
| 276746|0425115801| 0|
| 276746|0449006522| 0|
| 276746|0553561618| 0|
| 276746|055356451X| 0|
| 276746|0786013990| 0|
| 276746|0786014512| 0|
| 276747|0060517794| 9|
| 276747|0451192001| 0|
| 276747|0609801279| 0|
| 276747|0671537458| 9|
+-------+----------+-----------+
问题,获得每个出版商的最高费率
我计算它的想法是使用groupBy函数按 ISBN 对每个数据框进行分组,但我认为它应该是更好的方法。
这是我加载dfs的代码。
def crearDataFrame(nombre_fichero):
df = spark.read.format("csv").option("header", "true").option("delimiter", ";").load(nombre_fichero)
return df
数据框加载:
dfUser = crearDataFrame("BX-Users.csv")
dfBooks = crearDataFrame("BX-Book.csv")
我想将每个人分组以创建正确的查询。
df_ = dfUser.join(dfBooks, dfUser.ISBN == dfBooks.ISBN, 'inner').show()
您是否知道同时使用两个df创建查询是否可行?
谢谢大家。
答案 0 :(得分:0)
这应计算每个发布商的最高评级。
dfBooks
.select("ISBN", "Publisher")
.join(dfBooks_Rating, Seq("ISBN"))
.groupBy("Publisher")
.agg(max($"Book-Rating") as "maxRating")
.show