如何在Spark中并行化RDD / DataFrame创建?

时间:2015-07-07 23:59:14

标签: scala parallel-processing apache-spark apache-spark-sql

说我有一个看起来像下面的火花作业:

def loadTable1() {
  val table1 = sqlContext.jsonFile(s"s3://textfiledirectory/")
  table1.cache().registerTempTable("table1")
}  

def loadTable2() {
  val table2 = sqlContext.jsonFile(s"s3://testfiledirectory2/")
  table2.cache().registerTempTable("table2")
} 


def loadAllTables() {
  loadTable1()
  loadTable2()
}

loadAllTables()

如何并行化这个Spark作业,以便同时创建两个表?

3 个答案:

答案 0 :(得分:3)

您无需并行化。 RDD / DF创建操作不执行任何操作。这些数据结构是 lazy ,因此任何实际计算只会在您开始使用它们时发生。当Spark计算确实发生时,它将自动并行化(逐个分区)。 Spark将在执行程序之间分配工作。所以你通常不会通过引入进一步的并行性来获得任何东西。

答案 1 :(得分:0)

使用期货!

getBytes()

答案 2 :(得分:-1)

您可以使用标准的scala线程机制执行此操作。就个人而言,我想做一个路径和路径对的列表。表名,然后平行映射。您还可以查看期货或标准线程。