昨天在群里有一个同学问了一个spark中关于stage的一个问题,关于spark中stage的划分可以看这个,当时我大致看了一下,简单的回答了一下他,可能说的也不太清楚,今天把这个问题写了一个小demo,总结了一下.
问题是这样的,从oracle中读取一个表,然后对某个字段进行重分区,再从oracle中读取另外一张表,同样也对某一个字段进行重分区,最后进行两个df的join操作,然后提交,他对ui上面显示的stage有点疑惑,其实这是一个很简单的逻辑处理,我尽量模仿他的代码逻辑,我是从mysql中读取的数据.下面先看下代码:
package spark
import java.io.File
import org.apache.spark.sql.{DataFrame, SparkSession}
object sparkMysql {
def main(args: Array[String]): Unit = {
val warehouseLocation = new File("hdfs://cluster/hive/warehouse").getAbsolutePath
val spark = SparkSession
.builder()
.appName("Spark SQL basic example").config("spark.sql.warehouse.dir", warehouseLocation).enableHiveSupport().getOrCreate()
/* .master("local[4]")
.appName("Spark SQL basic example")
.getOrCreate()*/
//代表了shuffle read task的并行度,该值默认