使用Shell脚本文件提交火花作业



我正在尝试从shell脚本提交火花作业。

它是一个简单的脚本,带有Spark-Submit命令。我正在尝试通过Spark-Submit命令向我的主要功能进行参数,但是当我尝试执行shell文件时,作业失败了,错误:

scala.MatchError: rma (of class java.lang.String) 

我在代码中使用了匹配案例。

这是我的shell脚本的内容

    #adsName=$1
    spark-submit --class TestQuery --master yarn --deploy-mode cluster 
--driver-memory 12G --executor-memory 8G --executor-cores 4 
--num-executors 100 --files /opt/mapr/spark/spark-2.1.0/conf/hive-site.xml 
--jars /users/myuser/config-1.2.0.jar 
/users/myuser/jars/adsoptimization_2.11-0.1.jar 
xyz

so'xyz'是我在命令中传递的字符串。目前,我已经对其进行了硬编码,它仍然无法正常工作,我想动态地将其作为参数传递给Shell File。

在主要功能中我的代码:

args(0) match  {
  case "str1" => TestQuery(spark).runstr1
  case "xyz" => TestQuery(spark).runxyz
  case "str2" => TestQuery(spark).runstr2
  case "str3" => TestQuery(spark).runstr3
}

所以我通过的" xyz"字符串将在args(0)中(然后我通过将Spark Session对象作为ARGS来调用案例类中定义的函数)

所以在这里,如何简单地使Spark作业通过Shell脚本

当您通过没有匹配模式的值时,该错误就会出现。您通过了rma,但没有案例。只需添加此...

args(0) match  {
  case "str1" => TestQuery(spark).runstr1
  case "xyz" => TestQuery(spark).runxyz
  case "str2" => TestQuery(spark).runstr2
  case "str3" => TestQuery(spark).runstr3
  case _ => TestQuery(spark).someDefaultDefined
}

相关内容

  • 没有找到相关文章

最新更新