Java+;Spark简单联接
我是Spark的新手,我必须在我的大学里这样做 这里有两个带数据库的文本文件 用户信息:(id、电子邮件、语言、位置) 交易信息:(交易id、产品id、用户id、采购金额、项目描述) 我的任务是提供如下查询: 用户id、计数(产品id)、位置Java+;Spark简单联接,java,apache-spark,tuples,Java,Apache Spark,Tuples,我是Spark的新手,我必须在我的大学里这样做 这里有两个带数据库的文本文件 用户信息:(id、电子邮件、语言、位置) 交易信息:(交易id、产品id、用户id、采购金额、项目描述) 我的任务是提供如下查询: 用户id、计数(产品id)、位置 非常感谢您的帮助 下面是一个简单的示例,您可以开始了。但是请阅读spark文档 输出: +-------+-----+--------+ |user-id|count|location| +-------+-----+--------+ | 1|
非常感谢您的帮助 下面是一个简单的示例,您可以开始了。但是请阅读spark文档 输出:
+-------+-----+--------+
|user-id|count|location|
+-------+-----+--------+
| 1| 1| US|
| 3| 2| FR|
| 2| 2| GB|
+-------+-----+--------+
这就是我在我的课程(简单连接)JoinJob=新JoinJob(sc);javapairdd results=job.joinData(“./src/main/resources/transactions.txt”,“/src/main/resources/users.txt”);System.out.println(results.collect().get(0)。\u 1);System.out.println(results.collect().get(0)。\u 2);System.out.println(results.collect().get(1)。\u 1);System.out.println(results.collect().get(1)。\u 2);印刷:1美国2 FR1请参考官方文件,阅读并尝试一些真正的东西!除了收集,你分享的东西甚至没有一个火花功能。这不是一个家庭作业写作平台。@MichałBednarz如果你能写SQL,下次就用它吧。非常感谢你!嘿,我投票了!我只是没有足够的声望点让它可见:)谢谢@MichałBednarz
1 1 1 300 prod1
2 1 2 300 prod1
3 1 2 300 prod2
4 2 3 100 prod2
5 1 3 300 prod3
val spark =
SparkSession.builder().master("local").appName("test").getOrCreate()
import spark.implicits._
val df1 = spark.sparkContext.parallelize(Seq(
(1, "user1@test.com", "EN", "US"),
(2, "user2@test2.com", "EN", "GB"),
(3, "user3@test3.com", "FR", "FR")
))
.toDF("id", "email", "language", "location")
val df2 = spark.sparkContext.parallelize(Seq(
(1, 1, 1, 300, "prod1"),
(2, 1, 2, 300, "prod1"),
(3, 1, 2, 300, "prod2"),
(4, 2, 3, 100, "prod2"),
(5, 1, 3, 300, "prod3")
)
).toDF("transaction-id", "product-id","user-id", "purchase-amount", "itemdescription")
val df2Count = df2.groupBy("user-id").count().alias("count_product_id")
val result = df2Count.join(df1, df2Count("user-id") === df1("id"))
result.select("user-id", "count", "location").show
+-------+-----+--------+
|user-id|count|location|
+-------+-----+--------+
| 1| 1| US|
| 3| 2| FR|
| 2| 2| GB|
+-------+-----+--------+