使用scala spark中的第一列连接两个数据集

使用scala spark中的第一列连接两个数据集,scala,join,apache-spark,Scala,Join,Apache Spark,我有两个数据集,比如, (电影名称、演员姓名)和 (电影名称、导演姓名) 我想用电影的名字加入他们,所以(电影名、演员名、导演名) 我尝试使用“join”,但它说“无法解析符号join” 你知道怎么加入他们吗 这是我的数据集的一部分,(电影名,女演员) 您必须首先为数据集创建pairrds,然后应用连接转换。您的数据集看起来不准确 请考虑下面的例子。 **Dataset1** a 1 b 2 c 3 **Dataset2** a 8 b 4 在Scala中,您的代码应该如下所示 val

我有两个数据集,比如, (电影名称、演员姓名)和 (电影名称、导演姓名)

我想用电影的名字加入他们,所以(电影名、演员名、导演名)

我尝试使用“join”,但它说“无法解析符号join” 你知道怎么加入他们吗

这是我的数据集的一部分,(电影名,女演员)


您必须首先为数据集创建pairrds,然后应用连接转换。您的数据集看起来不准确

请考虑下面的例子。

**Dataset1**

a 1
b 2
c 3

**Dataset2**

a 8
b 4
在Scala中,您的代码应该如下所示

val pairRDD1 = sc.textFile("/path_to_yourfile/first.txt").map(line => (line.split(" ")(0),line.split(" ")(1)))

val pairRDD2 = sc.textFile("/path_to_yourfile/second.txt").map(line => (line.split(" ")(0),line.split(" ")(1)))

val joinRDD = pairRDD1.join(pairRDD2)

joinRDD.collect
下面是scala shell的结果

res10: Array[(String, (String, String))] = Array((a,(1,8)), (b,(2,4)))

您的数据集都是
RDD[String]
。。。您需要它们的格式至少是
RDD[(String,String)]
。但是如果我使用RDD[(String,String)],它会说“RDD[String]的表达式不符合预期的RDD[(String,String)]类型。那么,我应该转换文本文件吗?当然会!我的意思是,您需要做一些工作来将数据集转换为正确的形式。数据集中的字符串是否为
“(,)”
?是的,每个数据集有两个类似的元素。对我来说,它似乎已经有了(string,string)的形式,所以我不知道如何转换它们。你有什么想法吗?@Alec举例来说,其中一个(电影名,女演员)是“(“《综艺》(1936){(1937-06-05)},”&Ashour,Luciene”)”我编辑了我的问题并添加了我的数据集。你能再检查一下吗?您显示的方式不起作用。此外,我尝试使用“,”拆分它们,但逗号太多,因此无法使用逗号拆分数据。您的数据集格式不一致,您必须先清理并格式化数据。如果您仔细看,文件中的每一行都已经是一个2元组。我还需要清理数据吗?根据您的代码,看起来您正在尝试从文本文件加载数据,文本文件中的数据是元组格式的吗?
val pairRDD1 = sc.textFile("/path_to_yourfile/first.txt").map(line => (line.split(" ")(0),line.split(" ")(1)))

val pairRDD2 = sc.textFile("/path_to_yourfile/second.txt").map(line => (line.split(" ")(0),line.split(" ")(1)))

val joinRDD = pairRDD1.join(pairRDD2)

joinRDD.collect
res10: Array[(String, (String, String))] = Array((a,(1,8)), (b,(2,4)))