【问题标题】:connecting mysql with pyspark用pyspark连接mysql
【发布时间】:2021-11-12 17:36:49
【问题描述】:

我想用 pyspark 连接 mysql。我正在使用 jupyter notebook 来运行 pyspark。但是,当我这样做时,

dataframe_mysql = sqlContext.read.format("jdbc").options(
    url="jdbc:mysql://localhost:3306/playground",
    driver = "com.mysql.jdbc.Driver",
    dbtable = "play1",
    user="root",
    password="sp123").load()

我得到一个错误

Py4JJavaError:调用 o89.load 时出错。 : java.lang.ClassNotFoundException: com.mysql.jdbc.Driver.

如何解决此错误并在 pyspark 数据帧中加载 mysql 数据?

【问题讨论】:

  • 您使用findspark 还是通过pyspark 启动笔记本?

标签: python mysql apache-spark pyspark


【解决方案1】:

我使用 python 脚本:

spark = SparkSession \
        .builder \
        .appName('test') \
        .master('local[*]') \
        .config("spark.driver.extraClassPath", "<path to mysql-connector-java-5.1.49-bin.jar>") \
        .getOrCreate()

df = spark.read.format("jdbc").option("url","jdbc:mysql://localhost/<database_name>").option("driver","com.mysql.jdbc.Driver").option("dbtable","<table_name>").option("user","<user>").option("password","<password>").load()

用您的参数替换 中的任何内容。

【讨论】:

    【解决方案2】:

    使用pyspark推出的笔记本

    通过Maven/Gradledownload jar file directly 安装MySQL Java 连接器驱动程序。然后提供到 pyspark 的 jar 路径作为 --jars 参数。如果您选择 maven 方法,mysql 连接器版本 8.0.11 应该是这样的:

    pyspark --jars "${HOME}/.m2/repository/mysql/mysql-connector-java/8.0.11/mysql-connector-java-8.0.11.jar"
    

    使用findspark

    使用add-packages提供mysql驱动,如:

    import findspark
    
    findspark.add_packages('mysql:mysql-connector-java:8.0.11')
    

    【讨论】:

    • 但是我找到了一种方法... SUBMIT_ARGS = "--packages mysql:mysql-connector-java:5.1.39 pyspark-shell" os.environ["PYSPARK_SUBMIT_ARGS"] = SUBMIT_ARGS conf = SparkConf() sc = SparkContext(conf=conf)
    猜你喜欢
    • 2016-09-15
    • 2018-10-28
    • 2016-04-29
    • 2018-03-11
    • 1970-01-01
    • 2021-01-31
    • 2020-03-31
    • 2015-09-25
    • 1970-01-01
    相关资源
    最近更新 更多