0
我是新來的斯卡拉和火花,現在我有兩個RDD像A是[(1,2),(2,3)]和B是[(4,5),(5, 6)],我想得到像[(1,2),(2,3),(4,5),(5,6)]的RDD。但事情是我的數據很大,假設A和B都是10GB。我使用sc.union(A,B),但速度很慢。我在Spark UI中看到在這個階段有28308個任務。高效地使用火花聯盟
有沒有更有效的方法來做到這一點?
我是新來的斯卡拉和火花,現在我有兩個RDD像A是[(1,2),(2,3)]和B是[(4,5),(5, 6)],我想得到像[(1,2),(2,3),(4,5),(5,6)]的RDD。但事情是我的數據很大,假設A和B都是10GB。我使用sc.union(A,B),但速度很慢。我在Spark UI中看到在這個階段有28308個任務。高效地使用火花聯盟
有沒有更有效的方法來做到這一點?
爲什麼不將兩個RDDs
轉換爲dataframes
並使用union
函數。
轉換爲dataframe
很簡單,您只需要import sqlContext.implicits._
並將.toDF()
功能與header names
配合使用。
例如:
val sparkSession = SparkSession.builder().appName("testings").master("local").config("", "").getOrCreate()
val sqlContext = sparkSession.sqlContext
var firstTableColumns = Seq("col1", "col2")
var secondTableColumns = Seq("col3", "col4")
import sqlContext.implicits._
var firstDF = Seq((1, 2), (2, 3), (3, 4), (2, 3), (3, 4)).toDF(firstTableColumns:_*)
var secondDF = Seq((4, 5), (5, 6), (6, 7), (4, 5)) .toDF(secondTableColumns: _*)
firstDF = firstDF.union(secondDF)
它應該是很容易讓你與dataframes
工作比RDDs
。將dataframe
更改爲RDD
也相當容易,只需撥打.rdd
功能
val rddData = firstDF.rdd