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

wha*_*aha 2 mysql apache-spark apache-spark-sql

全部。最近需要用sparksql往mysql中插入1亿左右的数据,但是速度比较慢,大概1小时左右。有人可以有一种有效的插入方式吗?

mysql 配置 =>

prop.setProperty("user", "user")
prop.setProperty("password", "password")
prop.setProperty("rewriteBatchedStatements", "true")
prop.setProperty("batchsize", "1000000")
prop.setProperty("numPartitions", "3000") 
Run Code Online (Sandbox Code Playgroud)

Álv*_*cia 6

尝试添加?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)
Run Code Online (Sandbox Code Playgroud)

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

    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.39</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

  • 我很高兴!!您能投票赞成我的答案并接受吗?:) @whathaha (2认同)