Spark作业在执行时仅创建1阶段任务

时间:2018-07-27 12:49:17

标签: scala apache-spark apache-spark-sql spark-submit hivecontext

我正在尝试使用Spark 2.1.1将数据从DB2加载到Hive。 &Scala 2.11。 使用的代码在下面给出

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql
import org.apache.spark.sql.SparkSession
import org.apache.spark.sql.SQLContext
import org.apache.spark.sql.hive.HiveContext;

object DB2SparkDataImport {
  def main(args: Array[String]): Unit = {
    //Start the Spark context
    val conf = new SparkConf().setAppName("DB2SparkDataImport").set("mapreduce.fileoutputcommitter.algorithm.version","2").set("spark.serializer","org.apache.spark.serializer.KryoSerializer").set("spark.kryoserializer.buffer.mb","24") 
    val sc = new SparkContext(conf)
    val sqlContext = new SQLContext(sc)
    val hiveContext = new HiveContext(sc)
    val sparkSession = SparkSession.builder().enableHiveSupport().getOrCreate()
    val df = sqlContext.read.format("jdbc").option("url", "jdbc:db2://<<host>>:<<port>>/<<db>>")
      .option("driver", "com.ibm.db2.jcc.DB2Driver").option("dbtable", "<<table name>>").option("user", "<<user name>>").option("password", "pswd").option("column", "LAST_UPD").option("numPartitions", "100").option("lowerBound", "1").option("upperBound", "100000").load()
    df.createOrReplaceTempView("mytempTable")
    val query = "INSERT OVERWRITE TABLE test.temp_stage select * from mytempTable"
    sparkSession.sql(query);
  }
}

使用的“火花提交”命令是

export SPARK_MAJOR_VERSION=2
spark-submit --master yarn --deploy-mode cluster --class com.test.DB2SparkDataImport --driver-memory 5g  --executor-memory 3G --num-executors 10 --executor-cores 3  --conf spark.sql.shuffle.partitions=23 --conf spark.default.parallelism=23  --conf 'spark.executor.extraJavaOptions=-Ddb2.jcc.charsetDecoderEncoder=3' --conf 'spark.driver.extraJavaOptions=-Ddb2.jcc.charsetDecoderEncoder=3'  --jars db2jcc4-10.1.jar --files hive-site.xml DB2SparkDataImport-0.0.1-SNAPSHOT.jar 

此工作需要30多分钟才能完成。否:表中的记录为34901381及其678.7422 MB。我添加了column,numPartitions,下限和上限值。我需要每小时执行一次作业,以从表中获取整个数据。

请帮助解决为何仅为此程序生成1个阶段任务以及如何减少执行此作业的时间。

谢谢

Amrutha K

0 个答案:

没有答案