Все. Недавно мне нужно вставить около 100000000 данных в mysql с помощью sparksql, однако скорость довольно низкая, это занимает около 1 часа. Может у кого-нибудь есть действенный способ вставить?
конфигурация mysql =>
prop.setProperty("user", "user")
prop.setProperty("password", "password")
prop.setProperty("rewriteBatchedStatements", "true")
prop.setProperty("batchsize", "1000000")
prop.setProperty("numPartitions", "3000")
Поскольку я думаю, что Spark уже предоставляет эту функцию вставки, у нее должен быть эффективный способ.






Попробуйте добавить ?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>
@whathaha Я обновил свой ответ. Я попробовал, и у меня это сработало. Скажите, пожалуйста, сработало ли это и для вас
Я так рад!! Не могли бы вы проголосовать за мой ответ и принять его? :) @whathaha
Почему бы вам не записать эти данные в MySQL самостоятельно? Если это фиксированные данные, создайте правильный дамп для импорта.