Не удается подключиться к MysqlDB через python spark

Я хочу сохранить мой обработанный 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 -– драйвер-путь-класса /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

Также настройте улей метастор.

Так, как я мог загрузить свой результат 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

2 ответа

Решение

При передаче драйверов jdbc или других java-зависимостей в вашу программу spark, вы должны использовать аргумент --jars.

--jars Разделенный запятыми список локальных jar-файлов для включения в пути к классам драйвера и исполнителя.

Решил это, добавив --jar /path/to/mysql/connector для спарк-отправки вроде,

 ./bin/spark-submit --jars lib/mysql-connector-java-5.1.38-bin.jar sample.py
Другие вопросы по тегам