当前位置: 首页 > 知识库问答 >
问题:

包含mysql连接器的spark-submit命令

祁远
2023-03-14

我有一个scala对象文件,它内部查询mysql表,做一个连接,并把数据写到s3,测试了我的代码在本地运行得非常好。但是当我将它提交给集群时,它会在错误下面抛出:

nohup spark-submit --class QuaterlyAudit --master yarn-client --num-executors 8 
--driver-memory 16g --executor-memory 20g --executor-cores 10 /mypath/campaign.jar &
name := "mobilewalla"

version := "1.0"

scalaVersion := "2.11.8"

libraryDependencies ++= Seq("org.apache.spark" %% "spark-core" % "2.0.0" % "provided",
  "org.apache.spark" %% "spark-sql" % "2.0.0" % "provided",
  "org.apache.hadoop" % "hadoop-aws" % "2.6.0" intransitive(),
  "mysql" % "mysql-connector-java" % "5.1.37")

assemblyMergeStrategy in assembly := {
  case PathList("META-INF", xs@_*) =>
    xs.map(_.toLowerCase) match {
      case ("manifest.mf" :: Nil) |
       ("index.list" :: Nil) |
       ("dependencies" :: Nil) |
       ("license" :: Nil) |
       ("notice" :: Nil) => MergeStrategy.discard
  case _ => MergeStrategy.first // was 'discard' previousely
}
  case "reference.conf" => MergeStrategy.concat
  case _ => MergeStrategy.first
}
assemblyJarName in assembly := "campaign.jar"

我还尝试了:

nohup spark-submit --driver-class-path /mypath/mysql-connector-java-5.1.37.jar 
--class QuaterlyAudit --master yarn-client --num-executors 8 --driver-memory   16g 
--executor-memory 20g --executor-cores 10 /mypath/campaign.jar &

但还是没有运气,我在这里错过了什么。

共有1个答案

商和雅
2023-03-14

这是Spark无法获得JDBC jar的明显原因。很少有工作可以修复它。毫无疑问,许多人都面临着这个问题。这是由于Jar没有被上传到驱动程序和执行程序。

  1. 您可能希望使用构建管理器(Maven,SBT)组装应用程序,这样就不需要在spark-submitCLI中添加dependecies。
  2. 您可以在spark-submitcli中使用以下选项:--jars$(echo./lib/*.jar tr''',')
  3. 还可以尝试在spark_home/conf/spark-default.conf文件中配置这两个变量:spark.driver.extraclasspathspark.executor.extraclasspath,并将这些变量的值指定为jar文件的路径。确保工作节点上存在相同的路径。
 类似资料:
  • 有人能解释一下spark-submit脚本中的和之间的区别吗? 另外,如果依赖项在应用程序中,我是否需要配置?(我这样问是因为我在中更改了版本,而忘记在中更改了它,这使我的应用程序崩溃了)

  • **dataframe2:从另一个来源获得的键的Dataframe(这些键是上表中ID列的分区键)-此表中不同键的数量约为0.15万** 现在,此代码总是导致“com.datastax.oss.driver.api.core.servererrors.ReadFailureException:在一致性LOCAL_ONE读取查询期间Cassandra失败(需要1个响应,但只有0个副本响应,1个失败)

  • 注意,这里是每个cassandra分区的限制,而不是每个spark分区的限制(连接器中现有的限制函数支持这一点)。 spark 2.0.1,连接器-2.0.0-M3

  • 那么需要在命令中做哪些更改来加载包呢? 此包的详细信息显示在https://mvnrepository.com/artifact/cloudant-labs/spark-cloudant/2.0.0-S2.11中

  • 我想请你帮忙。我有两张桌子。在表1中,我有client_num和personal data。我想把tab1和tab2连接起来,其中也有client_nums,但一个客户机号可以在更多行上。本表2的第二列是以数字1-5写成的产品。 表1 CLIENT_NUM;性别 表2 CLIENT_NUM;产品 现在我只想要那些没有4号产品的客户 你能帮我一下吗?谢谢

  • 问题内容: 在Mac上如何从命令行连接到MySQL?(即给我看代码) 我正在做一个PHP / SQL教程,但首先假设您已经在MySQL中。 问题答案: 看到这里http://dev.mysql.com/doc/refman/5.0/en/connecting.html 上面的选项表示: 查看链接,那里有详细的链接! 如Rick所述,您可以通过不这样传递密码来避免将密码作为命令的一部分传递: 编辑此