Spark veri kaynakları

Spark Veri Kaynağı API'si, dış veritabanlarından doğrudan Azure Databricks okumanızı ve bu veritabanlarına yazmanızı sağlar. Bunu yalnızca Spark altyapısının tam esnekliğine ihtiyacınız olduğunda, kaynakta yerel sorgular yürütmek istediğinizde veya dış sistemlere yazma erişimi gerektirdiğinde kullanın. Genel olarak Azure Databricks, sorguların Spark veya SQL’e otomatik olarak iletildiği, yönetişimle denetlenen salt okunur erişimi önerir. Bkz. Sorgu federasyonu nedir?.

Spark Veri Kaynağı API'sinin bağlantı, sorgu yürütme ve şema algılama için belirli davranışları vardır.

  • Birincil iş yükü ve sonraki Spark dönüşümleri Azure Databricks Spark kümesinde çalışır.
  • seçeneği kullanıldığında query , belirtilen SQL deyimi tamamen dış veri kaynağında çalışır. Spark, sorgu dizgesi üzerinde dönüşüm aşağı itmesi gerçekleştirmeden sonuçları getirir.
  • Bağlantı için Azure Databricks paketlenmiş bağlayıcı, kullanıcı tarafından sağlanan bir JDBC sürücüsü veya PySpark özel veri kaynağı gerekir.
  • Spark, şemayı dış veritabanı tablosundan otomatik olarak okur ve türlerini Spark SQL türleriyle eşler.

Paketlenmiş bağlayıcı kullanma

Databricks Runtime, yaygın veri kaynakları için iyileştirilmiş bağlayıcılar içerir. Tam liste için bkz. Desteklenen paketlenmiş bağlayıcılar .

Paketlenmiş bağlayıcılar, tam JDBC URL dizesi yerine ayrı seçenekler olarak host ve port kullanır.

Doğrudan geçişli sorgu kullanarak verileri okuyun

seçeneğinin query kullanılması, veriler Spark'a ulaşmadan önce kaynak veritabanında filtreleme ve birleştirme mantığının yürütülmesini sağlar. Görünümler aracılığıyla otomatik sorgu gönderimi ve Unity Kataloğu izin temsilcisi ile yönetilen okuma erişimi için bunun yerine uzak sorguları göz önünde bulundurun.

df = (spark.read
  .format("sqlserver")
  .option("host", "<your-sql-server-instance>.database.windows.net")
  .option("user", dbutils.secrets.get(scope="<scope>", key="<user>"))
  .option("password", dbutils.secrets.get(scope="<scope>", key="<password>"))
  .option("database", "<database-name>")
  .option("query", "SELECT id, name FROM users WHERE active = 1")
  .load())

Veri yazma

Verilerin nasıl yazılacağını denetlemek için ile .mode() bir yazma modu belirtin. Varolan bir tabloya satır eklemek veya append içindekileri değiştirmek için kullanınoverwrite.

(df.write
  .format("sqlserver")
  .mode("overwrite")
  .option("host", "<your-sql-server-instance>.database.windows.net")
  .option("user", dbutils.secrets.get(scope="<scope>", key="<user>"))
  .option("password", dbutils.secrets.get(scope="<scope>", key="<password>"))
  .option("database", "<database-name>")
  .option("dbtable", "<table-name>")
  .save())

JDBC UC bağlantısı kullanma

Kaynağa özgü bir bağlayıcı paketlenmediyse veya belirli bir JDBC sürücü sürümünü kullanmak istiyorsanız, JDBC Unity Kataloğu bağlantısı kullanın. Bu, kimlik bilgileri yönetimini merkezileştirmenize ve kendi JDBC sürücünüzü getirmenize olanak tanır.

JDBC Unity Kataloğu bağlantısı, paketlenmiş bağlayıcı veya ham JDBC sürücüsünü doğrudan kullanmaya kıyasla çeşitli avantajlar sunar. JDBC Unity Kataloğu bağlantısıyla şunları yapabilirsiniz:

  • JDBC'yi destekleyen tüm veritabanları için kendi JDBC sürücü JAR'nizi getirin.
  • Bağlantıyı bir kez oluşturun ve sunucusuz, standart ve ayrılmış kümeler arasında yeniden kullanabilirsiniz.
  • Unity Kataloğu bağlantı nesnesi kullanarak veri kaynağına yönetilen erişimi kullanın.
  • Sorgulayan kullanıcıdan bağlantı kimlik bilgilerini gizleyin.
  • Spark Veri Kaynağı API'sini kullanarak dış veritabanlarından okuma ve bu veritabanlarına yazma.

JDBC Unity Kataloğu bağlantısı kullanmak için Spark seçeneklerinizde belirtin databricks.connection :

df = (spark.read
  .format("jdbc")
  .option("databricks.connection", "<connection-name>")
  .option("query", "SELECT * FROM external_table")
  .load())

Kurulum yönergeleri için bkz. JDBC bağlantısı.

Ayrılmış kümelerde özel bağlayıcı kullanma

Ayrılmış (klasik) kümelerde, Databricks Runtime ile paketlenmeyen üçüncü taraf Spark veri kaynağı bağlayıcılarını veya JDBC sürücülerini yükleyebilirsiniz.

Aşağıdaki durumlarda bu yaklaşımı kullanın:

  • MongoDB, Cassandra, Couchbase veya Elasticsearch gibi sistemler için bir üçüncü taraf Spark bağlayıcısı gerekir.
  • Çalışma zamanında paketlenmeyen belirli bir sürücü sürümüne ihtiyacınız vardır.
  • Unity Kataloğu bağlantısı kurmadan doğrudan kümeye bir JDBC sürücüsü yüklemek istiyorsunuz.

Bağlayıcı veya sürücü yükleme

Küme kitaplıklarınızı hesapla> aracılığıylakümenize> kitaplığı yükleyinKitaplıkları>Yeni yükle'yi yükleyin. Maven koordinatlarını, herhangi bir JAR'yi indirmeden veya karşıya yüklemeden doğrudan kullanabilirsiniz. Kütüphanenin etkinleşmesi için kümeyi yeniden başlatın.

Veriyi oku

Bağlayıcı yüklendikten sonra, verileri okumak için bağlayıcının biçim adını ve gerekli bağlantı seçeneklerini kullanın.

df = (spark.read
  .format("mongodb")
  .option("connection.uri", "mongodb://<hostname>:27017")
  .option("database", "<database-name>")
  .option("collection", "<collection-name>")
  .load())

Veri yazma

Verileri kaynağa geri yazmak için aynı biçim adını ve bağlantı seçeneklerini kullanın.

(df.write
  .format("mongodb")
  .mode("overwrite")
  .option("connection.uri", "mongodb://<hostname>:27017")
  .option("database", "<database-name>")
  .option("collection", "<collection-name>")
  .save())

Considerations

Ayrılmış kümelerde özel bağlayıcıları kullanırken aşağıdakileri göz önünde bulundurun.

  • Sürücü veya bağlayıcı yalnızca yüklü olduğu kümede kullanılabilir.
  • Databricks SQL, sunucusuz veya standart erişim modu kümelerinde özel üçüncü taraf Spark JAR'leri desteklenmez. Bu işlem türleri için paketlenmiş bağlayıcıları veya JDBC Unity Kataloğu bağlantılarını kullanın.

PySpark özel veri kaynakları

Python DataSource API'leri, JAR'ler veya JVM tabanlı kitaplıklar olmadan tamamen Python özel veri bağlayıcıları oluşturmanıza olanak tanır. REST API'lerine, SaaS uygulamalarına veya JDBC arabirimi olmayan herhangi bir sisteme bağlanmanız gerektiğinde veya program aracılığıyla yapay veri oluşturmak istediğinizde bunu kullanın. API hem toplu hem de akış okuma ve yazma işlemlerini destekler.

Note

PySpark özel veri kaynakları Databricks Runtime 15.4 LTS veya üzerini gerektirir.

Kurulum, örnekler ve API başvurusu için bkz. PySpark özel veri kaynakları.

Tümleştirme stratejilerini karşılaştırma

Aşağıdaki tabloda Spark Veri Kaynağı API'sini Lakehouse Federation ve Lakeflow Connect ile karşılaştırarak kullanım örneğiniz için doğru yaklaşımı seçmenize yardımcı olur.

Feature Spark Veri Kaynağı API'si Lakehouse Federasyonu Lakeflow Connect
Birincil kullanım örneği Karmaşık ETL, özel Spark mantığı, doğrudan sorgular Geçici sorgular, BI raporlama Yüksek ölçekli, otomatik veri alımı
Veri taşıma Spark belleğine yüklendi (kısa ömürlü) Spark belleğine yüklendi (kısa ömürlü) Delta Lake’e kopyalandı (kalıcı)
Sorgu çalıştırma Yerel query seçeneği kullanarak el ile aşağı gönderme Spark ve SQL filtrelerinin, birleştirmelerinin ve toplulaştırmalarının otomatik olarak aşağı itilmesi Uygulanamaz (tam tablo çoğaltma)
Governance Unity Catalog bağlantısı (JDBC) veya gizli anahtar kapsamları Unity Kataloğu (federasyon kataloğu) Unity Catalog (yönetilen işlem hattı)
En iyi kullanım alanları Tam Spark esnekliğine ihtiyaç duyan ileri düzey kullanıcılar İdareyi korurken veri taşımayı en aza indirme Üretim ortamındaki CDC ve veri alım işlem hatları

Desteklenen paketlenmiş bağlayıcılar

Aşağıdaki veri kaynakları Databricks Runtime'da paketlenmiştir ve doğrudan Spark aracılığıyla çağrılabilir. Okuma ve yazma işlemleri ayrılmış ve standart kümelerde desteklenir.

Note

Sunucusuz işlemdeki yazma işlemleri PostgreSQL, SQL Server, MySQL, Snowflake ve Redshift için desteklenir. Desteklenen bağlayıcı seçenekleri için paket bağlayıcılar için sunucusuz yazma seçenekleri konusuna bakın.

Veri kaynağı spark.format() isim
PostgreSQL "postgresql"
SQL Server "sqlserver"
MySQL ve MariaDB "mysql"
Snowflake "snowflake"
Amazon Redshift "redshift"
Google BigQuery (veri analizi platformu) "bigquery"
Azure Synapse "SQLDW"
HTTP "http"

Limitations

Spark Veri Kaynağı API'sini Azure Databricks kullanırken aşağıdaki sınırlamalar geçerlidir.

  • Paketlenmiş veri kaynakları için Spark seçenekleri , queryve bağlayıcıya dbtableözgü küçük bir seçenek kümesiyle sınırlıdır.
  • Özel üçüncü taraf Spark JAR'leri yalnızca ayrılmış kümelere yüklenebilir. Sunucusuz veya standart kümeler için paketlenmiş bağlayıcıları veya JDBC Unity Kataloğu bağlantılarını kullanın.
  • PySpark özel veri kaynakları Databricks Runtime 15.4 LTS veya üzerini gerektirir.