sparksql如何将数据批量插入mysql?

时间:2018-08-01 09:02:34

标签: mysql apache-spark apache-spark-sql

全部。 最近,我需要使用sparksql将大约100,000,000数据插入mysql,但是速度非常低,大约需要1个小时。有人可以有效地插入吗?

mysql配置=>

prop.setProperty("user", "user")
prop.setProperty("password", "password")
prop.setProperty("rewriteBatchedStatements", "true")
prop.setProperty("batchsize", "1000000")
prop.setProperty("numPartitions", "3000") 

1 个答案:

答案 0 :(得分:0)

尝试将?rewriteBatchedStatements=true添加到您的MySQL URI。您的URI应该像这样:jdbc:mysql://host:port/db?rewriteBatchedStatements=true

希望有帮助。

更新

尝试一下,它对我有用。设置driver属性可以解决问题。

val prop = new Properties()

prop.setProperty("user", dbUser)
prop.setProperty("password", dbPassword)
prop.put("driver", "com.mysql.jdbc.Driver");

df.write.mode("append").jdbc("jdbc:mysql://" + dbHost + "/" + dbName + "?rewriteBatchedStatements=true", "TABLE_NAME", prop)

而且我还必须导入Java MySQL连接器。

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.39</version>
    </dependency>