路途尚远 2023-04-02 16:29 采纳率: 50%
浏览 9

linux pyspark连接mysql出错

img


下载好了mysql的驱动jar包,但是在连接mysql的时候出现错误pyspark does not support any appliance options
请问这是什么原因

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-04-03 02:05
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/688018
    • 这篇博客也不错, 你可以看下pyspark出现错误
    • 除此之外, 这篇博客: linux 通过JDBC连接数据库,使用Spark读写MySql数据库的数据(2021-10-3)中的 三、启动pyspark,连接数据库,读写数据 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      1.启动pyspark,附加如下参数。
      因为启动pyspark时,必须指定mysql连接驱动jar包(如果你前面已经采用下面方式启动了pyspark,就不需要重复启动了)。\表示换行。因为之前设置了SPARK_PATH环境变量,可以在全局输入pyspark启动,不需要进入bin目录。

      pyspark \
      --jars /usr/local/spark/jars/mysql-connector-java-8.0.26/mysql-connector-java-8.0.26.jar \
      --driver-class-path  /usr/local/spark/jars/mysql-connector-java-8.0.26/mysql-connector-java-8.0.26.jar
      

      过程:
      在这里插入图片描述
      2.通过spark.read.format(“jdbc”).option().option()…操作通过JDBC连接MySql数据库时。

      jdbcDF = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/spark").option("driver","com.mysql.cj.jdbc.Driver").option("dbtable", "student").option("user", "root").option("password", "123456").load()
      jdbcDF.show()
      

      结果如图:
      在这里插入图片描述
      在pyspark中执行如下命令对数据进行读写:

      from pyspark.sql.types import Row
      from pyspark.sql.types import StructType
      from pyspark.sql.types import StructField
      from pyspark.sql.types import StringType
      from pyspark.sql.types import IntegerType
      studentRDD = spark.sparkContext.parallelize(["3 Rongcheng M 26","4 Guanhua M 27"]).map(lambda line : line.split(" "))
      //下面要设置模式信息
      schema = StructType([StructField("name", StringType(), True),StructField("gender", StringType(), True),StructField("age",IntegerType(), True)])
      rowRDD = studentRDD.map(lambda p : Row(p[1].strip(), p[2].strip(),int(p[3])))
      //建立起Row对象和模式之间的对应关系,也就是把数据和模式对应起来
      studentDF = spark.createDataFrame(rowRDD, schema)
      prop = {}
      prop['user'] = 'root'
      prop['password'] = '123456'
      prop['driver'] = "com.mysql.cj.jdbc.Driver"
      studentDF.write.jdbc("jdbc:mysql://localhost:3306/spark",'student','append', prop)
      

      其中参数:

      参数名称含义
      url数据库的连接地址,如:jdbc:mysql://localhost:3306/spark(最后为数据库名)
      Driver数据库的驱动程序,如:com.mysql.cj.jdbc.Driver
      dbtable需要访问的表名
      user数据库用户名
      password数据库用户密码

      过程:
      在这里插入图片描述

      在mysql中查看:
      在这里插入图片描述
      四、参考
      1、驱动包下载和安装

      Spark2.1.0入门:通过JDBC连接数据库(DataFrame)(Python版)
      2、数据库连接
      centos7下载spark连接mysql数据库提取数据(pyspark,Scala,python独立执行)
      3、java、驱动包版本和mysql对应关系
      mysql-connector-java与mysql版本的对应关系

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 创建了问题 4月2日

悬赏问题

  • ¥15 c#调用yolo3 dll文件获取的数据对不上
  • ¥20 WPF 如何实现多语言,label 和cs(live Charts)中是否都能翻译
  • ¥15 STM32F103上电短路问题
  • ¥15 关于#单片机#的问题:以ATMEGA128或相近型号单片机为控制器设计直流电机调速的闭环控制系统(相关搜索:设计报告|软件设计|流程图)
  • ¥15 打开软件提示错误:failed to get wglChoosePixelFormatARB
  • ¥15 (标签-python|关键词-char)
  • ¥15 python+selenium,在新增时弹出了一个输入框
  • ¥15 苹果验机结果的api接口哪里有??单次调用1毛钱及以下。
  • ¥20 学生成绩管理系统设计
  • ¥15 来一个cc穿盾脚本开发者