Как Sparksql может пакетно вставлять данные в MySQL?

Все. Недавно мне нужно вставить около 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") 

Почему бы вам не записать эти данные в MySQL самостоятельно? Если это фиксированные данные, создайте правильный дамп для импорта.

Nico Haase 01.08.2018 11:25

Поскольку я думаю, что Spark уже предоставляет эту функцию вставки, у нее должен быть эффективный способ.

whathaha 02.08.2018 10:27
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
2
2
2 896
1

Ответы 1

Попробуйте добавить ?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 Я обновил свой ответ. Я попробовал, и у меня это сработало. Скажите, пожалуйста, сработало ли это и для вас

Álvaro Valencia 03.08.2018 20:34

Я так рад!! Не могли бы вы проголосовать за мой ответ и принять его? :) @whathaha

Álvaro Valencia 06.08.2018 06:18

Другие вопросы по теме