Azure Databricks'te dosyalarla çalışma
Azure Databricks, aşağıdaki konumlardaki dosyalarla etkileşime geçiş için birden çok yardımcı program ve API sağlar:
- Unity Kataloğu birimleri
- Çalışma alanı dosyaları
- Bulut nesne depolaması
- DBFS bağlamaları ve DBFS kökü
- Kümenin sürücü düğümüne bağlı kısa ömürlü depolama
Bu makalede, aşağıdaki araçlar için bu konumlardaki dosyalarla etkileşime yönelik örnekler sağlanır:
- Apache Spark
- Spark SQL ve Databricks SQL
- Databricks dosya sistemi özellikleri (
dbutils.fs
veya%fs
) - Databricks CLI
- Databricks REST API
- Bash kabuk komutları (
%sh
) - kullanarak not defteri kapsamlı kitaplık yüklemeleri
%pip
- Pandalar
- OSS Python dosya yönetimi ve işleme yardımcı programları
Önemli
Verilere FUSE erişimi gerektiren dosya işlemleri, URI'leri kullanarak bulut nesne depolamasına doğrudan erişemez. Databricks, FUSE için bu konumlara erişimi yapılandırmak için Unity Kataloğu birimlerinin kullanılmasını önerir.
Scala, Unity Kataloğu olmadan tek kullanıcı erişim modu veya kümelerle yapılandırılmış işlemdeki Unity Kataloğu birimleri veya çalışma alanı dosyaları için FUSE'ı desteklemez. Scala, Unity Kataloğu ve paylaşılan erişim modu ile yapılandırılmış işlemdeki Unity Kataloğu birimleri ve çalışma alanı dosyaları için FUSE'yi destekler.
Verilere erişmek için bir URI düzeni sağlamam gerekiyor mu?
Azure Databricks'teki veri erişim yolları aşağıdaki standartlardan birini izler:
URI stili yollar bir URI şeması içerir. Databricks'e özel veri erişim çözümleri için URI düzenleri çoğu kullanım örneğinde isteğe bağlıdır. Bulut nesne depolamadaki verilere doğrudan eriştiğinizde, depolama türü için doğru URI düzenini sağlamanız gerekir.
POSIX stili yollar , sürücü köküne (
/
) göre veri erişimi sağlar. POSIX stili yollar hiçbir zaman bir düzen gerektirmez. Bulut nesne depolamadaki verilere POSIX stilinde erişim sağlamak için Unity Kataloğu birimlerini veya DBFS bağlamalarını kullanabilirsiniz. Birçok ML çerçevesi ve diğer OSS Python modülleri FUSE gerektirir ve yalnızca POSIX stili yolları kullanabilir.
Unity Kataloğu birimlerindeki dosyalarla çalışma
Databricks, bulut nesne depolama alanında depolanan tablosal olmayan veri dosyalarına erişimi yapılandırmak için Unity Kataloğu birimlerinin kullanılmasını önerir. Bkz . Unity Kataloğu birimleri nedir?.
Araç | Örnek |
---|---|
Apache Spark | spark.read.format("json").load("/Volumes/my_catalog/my_schema/my_volume/data.json").show() |
Spark SQL ve Databricks SQL | SELECT * FROM csv.`/Volumes/my_catalog/my_schema/my_volume/data.csv`; LIST '/Volumes/my_catalog/my_schema/my_volume/'; |
Databricks dosya sistemi yardımcı programları | dbutils.fs.ls("/Volumes/my_catalog/my_schema/my_volume/") %fs ls /Volumes/my_catalog/my_schema/my_volume/ |
Databricks CLI | databricks fs cp /path/to/local/file dbfs:/Volumes/my_catalog/my_schema/my_volume/ |
Databricks REST API | POST https://<databricks-instance>/api/2.1/jobs/create {"name": "A multitask job", "tasks": [{..."libraries": [{"jar": "/Volumes/dev/environment/libraries/logging/Logging.jar"}],},...]} |
Bash kabuk komutları | %sh curl http://<address>/text.zip -o /Volumes/my_catalog/my_schema/my_volume/tmp/text.zip |
Kitaplık yüklemeleri | %pip install /Volumes/my_catalog/my_schema/my_volume/my_library.whl |
Pandalar | df = pd.read_csv('/Volumes/my_catalog/my_schema/my_volume/data.csv') |
İşletim Sistemi Python | os.listdir('/Volumes/my_catalog/my_schema/my_volume/path/to/directory') |
Not
dbfs:/
Databricks CLI ile çalışırken şema gereklidir.
Birim sınırlamaları
Birimler aşağıdaki sınırlamalara sahiptir:
Zip ve Excel dosyaları yazma gibi doğrudan ekleme veya sıralı olmayan (rastgele) yazma işlemleri desteklenmez. Doğrudan ekleme veya rastgele yazma iş yükleri için, önce yerel diskte işlemleri gerçekleştirin ve ardından sonuçları Unity Kataloğu birimlerine kopyalayın. Örneğin:
# python import xlsxwriter from shutil import copyfile workbook = xlsxwriter.Workbook('/local_disk0/tmp/excel.xlsx') worksheet = workbook.add_worksheet() worksheet.write(0, 0, "Key") worksheet.write(0, 1, "Value") workbook.close() copyfile('/local_disk0/tmp/excel.xlsx', '/Volumes/my_catalog/my_schema/my_volume/excel.xlsx')
Seyrek dosyalar desteklenmez. Seyrek dosyaları kopyalamak için kullanın
cp --sparse=never
:$ cp sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file error writing '/dbfs/sparse.file': Operation not supported $ cp --sparse=never sparse.file /Volumes/my_catalog/my_schema/my_volume/sparse.file
Çalışma alanı dosyalarıyla çalışma
Databricks çalışma alanı dosyaları , bir çalışma alanında not defteri olmayan dosyalar kümesidir. Not defterleri ve diğer çalışma alanı varlıklarıyla birlikte kaydedilen verileri ve diğer dosyaları depolamak ve erişmek için çalışma alanı dosyalarını kullanabilirsiniz. Çalışma alanı dosyalarının boyut kısıtlamaları olduğundan Databricks, geliştirme ve test için yalnızca küçük veri dosyalarının burada depolanmasını önerir.
Araç | Örnek |
---|---|
Apache Spark | spark.read.format("json").load("file:/Workspace/Users/<user-folder>/data.json").show() |
Spark SQL ve Databricks SQL | SELECT * FROM json.`file:/Workspace/Users/<user-folder>/file.json`; |
Databricks dosya sistemi yardımcı programları | dbutils.fs.ls("file:/Workspace/Users/<user-folder>/") %fs ls file:/Workspace/Users/<user-folder>/ |
Databricks CLI | databricks workspace list |
Databricks REST API | POST https://<databricks-instance>/api/2.0/workspace/delete {"path": "/Workspace/Shared/code.py", "recursive": "false"} |
Bash kabuk komutları | %sh curl http://<address>/text.zip -o /Workspace/Users/<user-folder>/text.zip |
Kitaplık yüklemeleri | %pip install /Workspace/Users/<user-folder>/my_library.whl |
Pandalar | df = pd.read_csv('/Workspace/Users/<user-folder>/data.csv') |
İşletim Sistemi Python | os.listdir('/Workspace/Users/<user-folder>/path/to/directory') |
Not
file:/
Databricks Yardımcı Programları, Apache Spark veya SQL ile çalışırken şema gereklidir.
Çalışma alanı dosyaları sınırlamaları
Çalışma alanı dosyaları aşağıdaki sınırlamalara sahiptir:
Çalışma alanı dosya boyutu kullanıcı arabiriminden 500 MB ile sınırlıdır. Bir kümeden yazarken izin verilen dosya boyutu üst sınırı 256 MB'tır.
İş akışınız uzak git deposunda bulunan kaynak kodu kullanıyorsa, geçerli dizine yazamaz veya göreli bir yol kullanarak yazamazsınız. Diğer konum seçeneklerine veri yazma.
Çalışma alanı dosyalarına kaydederken komutları kullanamazsınız
git
. Çalışma alanı dosyalarında dizin oluşturmaya.git
izin verilmez.Sunucusuz işlemden çalışma alanı dosya işlemleri için sınırlı destek vardır.
Yürütücüler çalışma alanı dosyalarına yazamaz.
symlink'ler desteklenmez.
Databricks Runtime 14.2 ve altındaki paylaşılan erişim moduna sahip kümelerdeki kullanıcı tanımlı işlevlerden (UDF) çalışma alanı dosyalarına erişilemiyor.
Silinen çalışma alanı dosyaları nereye gider?
Çalışma alanı dosyasını silmek, dosyayı çöp kutusuna gönderir. Kullanıcı arabirimini kullanarak çöp sepetindeki dosyaları kurtarabilir veya kalıcı olarak silebilirsiniz.
Bkz. Nesne silme.
Bulut nesne depolamasında dosyalarla çalışma
Databricks, bulut nesne depolamadaki dosyalara güvenli erişim yapılandırmak için Unity Kataloğu birimlerinin kullanılmasını önerir. URI'leri kullanarak bulut nesne depolamadaki verilere doğrudan erişmeyi seçerseniz, izinleri yapılandırmanız gerekir. Bkz. Dış konumları, dış tabloları ve dış birimleri yönetme.
Aşağıdaki örneklerde bulut nesne depolamadaki verilere erişmek için URI'ler kullanılır:
Araç | Örnek |
---|---|
Apache Spark | spark.read.format("json").load("abfss://container-name@storage-account-name.dfs.core.windows.net/path/file.json").show() |
Spark SQL ve Databricks SQL | SELECT * FROM csv.`abfss://container-name@storage-account-name.dfs.core.windows.net/path/file.json`; LIST 'abfss://container-name@storage-account-name.dfs.core.windows.net/path'; |
Databricks dosya sistemi yardımcı programları | dbutils.fs.ls("abfss://container-name@storage-account-name.dfs.core.windows.net/path/") %fs ls abfss://container-name@storage-account-name.dfs.core.windows.net/path/ |
Databricks CLI | Desteklenmez |
Databricks REST API | Desteklenmez |
Bash kabuk komutları | Desteklenmez |
Kitaplık yüklemeleri | %pip install abfss://container-name@storage-account-name.dfs.core.windows.net/path/to/library.whl |
Pandalar | Desteklenmez |
İşletim Sistemi Python | Desteklenmez |
Not
Bulut nesne depolaması kimlik bilgisi geçişlerini desteklemez.
DBFS bağlamalarında ve DBFS kökünde dosyalarla çalışma
DBFS bağlamaları Unity Kataloğu kullanılarak güvenli hale getirilemez ve artık Databricks tarafından önerilmez. DBFS kökünde depolanan verilere çalışma alanındaki tüm kullanıcılar erişebilir. Databricks, dbfs kökünde hassas veya üretim kodu ya da veri depolamamanızı önerir. Bkz. DBFS nedir?.
Araç | Örnek |
---|---|
Apache Spark | spark.read.format("json").load("/mnt/path/to/data.json").show() |
Spark SQL ve Databricks SQL | SELECT * FROM json.`/mnt/path/to/data.json`; |
Databricks dosya sistemi yardımcı programları | dbutils.fs.ls("/mnt/path") %fs ls /mnt/path |
Databricks CLI | databricks fs cp dbfs:/mnt/path/to/remote/file /path/to/local/file |
Databricks REST API | POST https://<host>/api/2.0/dbfs/delete --data '{ "path": "/tmp/HelloWorld.txt" }' |
Bash kabuk komutları | %sh curl http://<address>/text.zip > /dbfs/mnt/tmp/text.zip |
Kitaplık yüklemeleri | %pip install /dbfs/mnt/path/to/my_library.whl |
Pandalar | df = pd.read_csv('/dbfs/mnt/path/to/data.csv') |
İşletim Sistemi Python | os.listdir('/dbfs/mnt/path/to/directory') |
Not
dbfs:/
Databricks CLI ile çalışırken şema gereklidir.
Sürücü düğümüne bağlı kısa ömürlü depolamadaki dosyalarla çalışma
Sürücü düğümüne eklenen ephermal depolama, yerel POSIX tabanlı yol erişimine sahip blok depolamadır. Bir küme sonlandırıldığında veya yeniden başlatıldığında bu konumda depolanan tüm veriler kaybolur.
Araç | Örnek |
---|---|
Apache Spark | Desteklenmez |
Spark SQL ve Databricks SQL | Desteklenmez |
Databricks dosya sistemi yardımcı programları | dbutils.fs.ls("file:/path") %fs ls file:/path |
Databricks CLI | Desteklenmez |
Databricks REST API | Desteklenmez |
Bash kabuk komutları | %sh curl http://<address>/text.zip > /tmp/text.zip |
Kitaplık yüklemeleri | Desteklenmez |
Pandalar | df = pd.read_csv('/path/to/data.csv') |
İşletim Sistemi Python | os.listdir('/path/to/directory') |
Not
file:/
Databricks Yardımcı Programları ile çalışırken şema gereklidir.
Kısa ömürlü depolamadan birimlere veri taşıma
Apache Spark kullanarak kısa ömürlü depolamaya indirilen veya kaydedilen verilere erişmek isteyebilirsiniz. Kısa ömürlü depolama sürücüye eklendiğinden ve Spark dağıtılmış bir işleme altyapısı olduğundan, tüm işlemler verilere buradan doğrudan erişemez. Sürücü dosya sisteminden Unity Kataloğu birimlerine veri taşımanız gerekiyorsa, aşağıdaki örneklerde olduğu gibi sihirli komutları veya Databricks yardımcı programlarını kullanarak dosyaları kopyalayabilirsiniz:
dbutils.fs.cp ("file:/<path>", "/Volumes/<catalog>/<schema>/<volume>/<path>")
%sh cp /<path> /Volumes/<catalog>/<schema>/<volume>/<path>
%fs cp file:/<path> /Volumes/<catalog>/<schema>/<volume>/<path>
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin