将数据帧转换为rdd和join

时间:2018-01-17 05:58:22

标签: scala apache-spark

我正在尝试比较数据帧和RDD之间的连接性能,所以我尝试将数据帧转换为rdd,然后应用由于以下错误而失败的连接。

错误: - console:34:错误:未找到:值pairRDD1               pairRDD1.join(pairRDD2)

我在这里遗漏了什么吗?

val df1=sqlContext.sql("select column1,column2,column3,column4 from table_1 AS a")

df1.printSchema()

val pairRdd1=df1.rdd.map(r => (r.getString(0),r.getString(1),r.getString(2),r.getString(3))).map { case (column1,column2,column3,column4) => ((column1),column2,column3,column4)}

val df2=sqlContext.sql("select column1,column2,column3,column4 from table_2 AS b")   

df2.printSchema()

val pairRdd2=df2.rdd.map(r => ((r.getString(0)),r.getString(1),r.getString(2),r.getString(3))).map {case (column1,column2,column3,column4) => ((column1),column2,column3,column4)}

val joined = pairRDD1.join(pairRDD2)



console:34: error: not found: value pairRDD1
pairRDD1.join(pairRDD2)

由于

1 个答案:

答案 0 :(得分:1)

错误表示所有内容console:34: error: not found: value pairRDD1 pairRDD1.join(pairRDD2)

编译器找不到pairRDD1,因为你没有pairRdd1

您有val joined = pairRDD1.join(pairRDD2)

应该是

val joined = pairRdd1.join(pairRdd2)

您可以按

创建RDD[String, (String, String...)]
  val pairRdd1=df1.rdd.map(r => (r.getString(0),(r.getString(1),r.getString(2),r.getString(3))))

  val pairRdd2=df2.rdd.map(r => (r.getString(0),(r.getString(1),r.getString(2),r.getString(3))))