在shell脚本中运行spark-shell命令

时间:2017-04-17 06:11:47

标签: mysql unix apache-spark

#!/bin/sh
spark-shell
import org.apache.spark.sql.SparkSession
val url="jdbc:mysql://localhost:3306/slow_and_tedious"
val prop = new java.util.Properties
prop.setProperty("user",”scalauser”)
prop.setProperty("password","scalauser123")
val people = spark.read.jdbc(url,"sat",prop)

以上命令用于使用JDBC在Mysql和Spark之间建立连接。 但是我不是每次编写这些命令而是编写脚本,而是在运行上面的脚本时抛出此错误。

enter image description here

3 个答案:

答案 0 :(得分:1)

使用您的代码创建名为test.scala的scala文件,如下所示

import org.apache.spark.sql.SparkSession
val url="jdbc:mysql://localhost:3306/slow_and_tedious"
val prop = new java.util.Properties
prop.setProperty("user",”scalauser”)
prop.setProperty("password","scalauser123")
val people = spark.read.jdbc(url,"sat",prop)

使用以下命令登录spark-shell。

spark-shell --jars mysql-connector.jar

您可以使用以下命令执行上面创建的代码。

scala> :load /path/test.scala

shell脚本每次启动sparkContext时都会花费更多时间来执行。

如果使用上面的命令,它将只执行test.scala中的代码。

由于在登录spark-shell时会加载sparkContext,因此在执行脚本时可以保存时间。

答案 1 :(得分:0)

您可以将脚本粘贴到文件中,然后执行

spark-shell < {your file name}

答案 2 :(得分:0)

尝试一下,

将您的代码写入文件x.txt

在您的Unix shell脚本中包括以下内容

cat filex.txt | spark-shell

貌似,您不能使用[&]在后台推送脚本