簡體   English   中英

通過使用Scala Spark中的第一列聯接兩個數據集

[英]Join two datasets by using the first column in scala spark

我有兩個數據集,例如(電影名,女演員的名字)和(電影名,導演的名字)

我想通過使用電影的名稱來加入他們,因此(電影名稱,女演員的姓名,導演的姓名)。

import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}

import scala.io.Source

object spark {
  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setAppName("FindFrequentPairs").setMaster("local[2]")
    val sc = new SparkContext(sparkConf)
    val text1: RDD[String] = sc.textFile(args(0))
    val text2: RDD[String] = sc.textFile(args(1))

    val joined = text1.join(text2)

我嘗試使用“連接”,但顯示“無法解析符號連接”。 你知道如何加入他們嗎?

這是我的數據集的一部分(電影名稱,女演員)。

('"Please Like Me" (2013) {Rhubarb and Custard (#1.1)}', '$haniqua')
('"Please Like Me" (2013) {Spanish Eggs (#1.5)}', '$haniqua')
('A Woman of Distinction (1950)  (uncredited)', '& Ashour, Lucienne')
('Around the World (1943)  (uncredited)', '& Ashour, Lucienne')
('Chain Lightning (1950)  (uncredited)', '& Ashour, Lucienne')

您必須先為數據集創建pairRDD,然后再應用聯接轉換。 您的數據集看起來不准確。

請考慮以下示例。

**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)))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM