无法通过python spark连接MysqlDB



我想将我处理过的rdd保存到mysql表中,因为我正在使用SparkDataFrame,但是我遇到了以下错误

py4j.protocol.Py4JJavaError: An error occurred while calling o216.jdbc.
: java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/student?user=root&password=root.

我将 MySQL-jar 添加到 Sparkshell 中

Spark-shell -–driver-class-path/path-to-mysql-jar/mysql-connectorjava-5.1.38-bin.jar.

    from pyspark import SparkContext
    from datetime import datetime
    import os
    import sys
    from pyspark.sql import SQLContext, Row
    sqlContext = SQLContext(sc)
    file1 = sc.textFile("/home/hadoop/text1").cache()
    file2 = sc.textFile("/home/hadoop/text2").cache()
    file3 = file1.union(file2).coalesce(1).map(lambda line: line.split(','))
    file1.unpersist()
    file2.unpersist()
    result = file3.map(lambda x: (x[0]+', '+x[1],float(x[2]))).reduceByKey(lambda a,b:a+b).sortByKey('true').coalesce(1)
    result = result.map(lambda x:x[0]+','+str(x[1]))
    schema_site = sqlContext.createDataFrame(result)
    schema_site.registerTempTable("table1")
    mysql_url="jdbc:mysql://localhost:3306/test?user=root&password=root&driver=com.mysql.jdbc.Driver"
    schema_site.write.jdbc(url=mysql_url, table="table1", mode="append")

我正在使用Spark Spark-1.5.0-bin-Hadoop2.4

还要设置 Hive 元存储。

那么我如何将我的RDD结果加载到Mysql表中。

输入文件为

  file1 contents are
  1234567  65656545  12
  1234567  65675859  11 
  file2 contents are,
  1234567  65656545  12
  1234567  65675859  11
 and the resultnat RDD is like
 1234567  65656545 24
 1234567  65675859  22
i created the table in mysql with three colunm,
std_id  std_code  std_res

我想要这样的表输出,

  std_id  std_code  std_res
  1234567  65656545    24
   1234567  65675859   24

通过添加 --jar/path/to/mysql/connector 来激发提交来解决它,

 ./bin/spark-submit --jars lib/mysql-connector-java-5.1.38-bin.jar sample.py

将 jdbc 驱动程序或其他 java 依赖项传递给 spark 程序时,应使用 --jars 参数。

-

-jars          要包含在驱动程序和执行器类路径上的本地 jar 的逗号分隔列表。

相关内容

  • 没有找到相关文章

最新更新