在运行时通过参数传递火花

时间:2019-01-03 23:45:07

标签: apache-spark hive

我正在尝试运行spark scala程序,该程序将读取配置单元数据并将其加载到postgres表中。

val ds = args(0)

//Getting current time of system
val ldt1 = LocalDateTime.now

val df2 = hiveContext.sql("select * from hive.table where ds='${ds}'")
df2.write .mode(SaveMode.Append) .jdbc( url = url, table = "post.tabl1", connectionProperties = connectionProperties)

//Getting current time of system
val ldt2 = LocalDateTime.now

通过Spark外壳,我给出如下信息:

data=20181210

/usr/hdp/2.5.3.0-37/spark2/bin/spark-submit --class abc --master yarn --deploy-mode client --driver-memory 10G --executor-memory 10G --num -executors 30 --jars xyz.jar prq.jar $ data

我尝试了各种方式,例如即使我更改了${data}也给了data='20181210',但没有任何效果。

即使我需要ldt2 - ldt1之间的时差也没有。

请问您对此有何建议?

1 个答案:

答案 0 :(得分:0)

在下面的简单示例中查看所需内容

object Main{
  def main(args: Array[String]): Unit = {
    val ds = args(0)

    println("Args 1 passed is " + ds)

  }
}

例如,您可以使用任何工具Maven打包该程序,然后运行以下命令

spark-submit --class Main --master local[*] --deploy-mode client --driver-memory 1G --executor-memory 1G --num-executors 1 TestLogic-1.0-SNAPSHOT.jar 12345

样本输出

2019-01-04 05:34:02 WARN  NativeCodeLoader:62 - Unable to load native-hadoop lib
rary for your platform... using builtin-java classes where applicable
Args 1 passed is 12345
2019-01-04 05:34:03 INFO  ShutdownHookManager:54 - Shutdown hook called
2019-01-04 05:34:03 INFO  ShutdownHookManager:54 - Deleting directory C:\Users\Path