الاستعلام عن 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()