Не удается подключиться к 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