我正在尝试比较数据帧和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)
由于
答案 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))))