مشاركة عبر


الاستعلام عن SQL Server باستخدام Azure Databricks

توضح هذه المقالة كيفية توصيل Azure Databricks بخادم Microsoft SQL لقراءة البيانات وكتابتها.

هام

التكوينات الموضحة في هذه المقالة تجريبية. يتم توفير الميزات التجريبية كما هي ولا تدعمها Databricks من خلال الدعم التقني للعملاء. للحصول على دعم اتحاد الاستعلام الكامل، يجب عليك بدلا من ذلك استخدام Lakehouse Federation، والذي يمكن مستخدمي Azure Databricks من الاستفادة من بناء جملة كتالوج Unity وأدوات إدارة البيانات.

تكوين اتصال بخادم SQL

في Databricks Runtime 11.3 LTS وما فوق، يمكنك استخدام sqlserver الكلمة الأساسية لاستخدام برنامج التشغيل المضمن للاتصال بخادم SQL. عند العمل مع DataFrames، استخدم بناء الجملة التالي:

Python

remote_table = (spark.read
  .format("sqlserver")
  .option("host", "hostName")
  .option("port", "port") # optional, can use default port 1433 if omitted
  .option("user", "username")
  .option("password", "password")
  .option("database", "databaseName")
  .option("dbtable", "schemaName.tableName") # (if schemaName not provided, default to "dbo")
  .load()
)

Scala

val remote_table = spark.read
  .format("sqlserver")
  .option("host", "hostName")
  .option("port", "port") // optional, can use default port 1433 if omitted
  .option("user", "username")
  .option("password", "password")
  .option("database", "databaseName")
  .option("dbtable", "schemaName.tableName") // (if schemaName not provided, default to "dbo")
  .load()

عند العمل مع SQL، حدد sqlserver في العبارة USING وتمرير الخيارات أثناء إنشاء جدول، كما هو موضح في المثال التالي:

DROP TABLE IF EXISTS sqlserver_table;
CREATE TABLE sqlserver_table
USING sqlserver
OPTIONS (
  dbtable '<schema-name.table-name>',
  host '<host-name>',
  port '1433',
  database '<database-name>',
  user '<username>',
  password '<password>'
);

استخدام برنامج تشغيل JDBC القديم

في Databricks Runtime 10.4 LTS والإدناه، يجب تحديد برنامج التشغيل والتكوينات باستخدام إعدادات JDBC. يستعلم المثال التالي عن SQL Server باستخدام برنامج تشغيل JDBC الخاص به. لمزيد من التفاصيل حول القراءة والكتابة وتكوين التوازي ودفع الاستعلام، راجع الاستعلام عن قواعد البيانات باستخدام JDBC.

Python

driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"

database_host = "<database-host-url>"
database_port = "1433" # update if you use a non-default port
database_name = "<database-name>"
table = "<table-name>"
user = "<username>"
password = "<password>"

url = f"jdbc:sqlserver://{database_host}:{database_port};database={database_name}"

remote_table = (spark.read
  .format("jdbc")
  .option("driver", driver)
  .option("url", url)
  .option("dbtable", table)
  .option("user", user)
  .option("password", password)
  .load()
)

Scala

val driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver"

val database_host = "<database-host-url>"
val database_port = "1433" // update if you use a non-default port
val database_name = "<database-name>"
val table = "<table-name>"
val user = "<username>"
val password = "<password>"

val url = s"jdbc:sqlserver://{database_host}:{database_port};database={database_name}"

val remote_table = spark.read
  .format("jdbc")
  .option("driver", driver)
  .option("url", url)
  .option("dbtable", table)
  .option("user", user)
  .option("password", password)
  .load()