Как использовать azure-sqldb-spark разъем в pyspark - PullRequest
0 голосов
/ 27 октября 2018

Я хочу ежедневно записывать около 10 ГБ данных в базу данных SQL-сервера Azure с помощью PySpark. В настоящее время с использованием драйвера JDBC, который занимает несколько часов, делая операторы вставки один за другим.

Я планирую использовать azure-sqldb-Разъем свечи, который утверждает, что турбо ускоряет запись, используя массовую вставку.

Я прошел официальный документ: https://github.com/Azure/azure-sqldb-spark. Библиотека написана на Scala и в основном требует использования 2 классов Scala:

import com.microsoft.azure.sqldb.spark.config.Config
import com.microsoft.azure.sqldb.spark.connect._

val bulkCopyConfig = Config(Map(
  "url"               -> "mysqlserver.database.windows.net",
  "databaseName"      -> "MyDatabase",
  "user"              -> "username",
  "password"          -> "*********",
  "databaseName"      -> "MyDatabase",
  "dbTable"           -> "dbo.Clients",
  "bulkCopyBatchSize" -> "2500",
  "bulkCopyTableLock" -> "true",
  "bulkCopyTimeout"   -> "600"
))

df.bulkCopyToSqlDB(bulkCopyConfig)

Может ли это быть реализовано в используемом в pyspark, как это (используя sc._jvm):

Config = sc._jvm.com.microsoft.azure.sqldb.spark.config.Config
connect= sc._jvm.com.microsoft.azure.sqldb.spark.connect._

//all config

df.connect.bulkCopyToSqlDB(bulkCopyConfig)

Я не эксперт в Python.Кто-нибудь может мне помочь с полным фрагментом, чтобы сделать это.

1 Ответ

0 голосов
/ 15 марта 2019

Соединитель Spark в настоящее время (по состоянию на март 2019 г.) поддерживает только API Scala (как описано здесь ).Поэтому, если вы работаете в записной книжке, вы можете выполнить всю предварительную обработку в python, наконец зарегистрировать фрейм данных как временную таблицу, например:

df.createOrReplaceTempView('testbulk')

и выполнить последний шаг в Scala:

%scala
//configs...
spark.table("testbulk").bulkCopyToSqlDB(bulkCopyConfig)
...