Dosya deposu
Önemli
Bu belge kullanımdan kaldırılmıştır ve güncelleştirilmeyebilir. Bu içerikte belirtilen ürünler, hizmetler veya teknolojiler artık desteklenmemektedir.
FileStore, DBFS içinde dosyaları kaydedebileceğiniz ve bunları web tarayıcınız tarafından erişilebilir hale getirebileceğiniz özel bir klasördür. FileStore kullanarak:
- çağırdığınızda
displayHTML
HTML ve JavaScript içinde erişilebilen görüntüler ve kitaplıklar gibi dosyaları kaydedin. - İndirmek istediğiniz çıkış dosyalarını yerel masaüstünüzde kaydedin.
- Databricks'te işlemek için yerel masaüstünüzden CSV'leri ve diğer veri dosyalarını karşıya yükleyin.
Belirli özellikleri kullandığınızda, Azure Databricks dosyaları FileStore altında aşağıdaki klasörlere yerleştirir:
/FileStore/jars
- karşıya yüklenen eski çalışma alanı kitaplıklarını içerir. Bu klasördeki dosyaları silerseniz, çalışma alanınızdaki bu dosyalara başvuran kitaplıklar artık çalışmayabilir./FileStore/tables
- kullanıcı arabirimini kullanarak içeri aktardığınız dosyaları içerir. Bu klasördeki dosyaları silerseniz, bu dosyalardan oluşturduğunuz tablolara artık erişilemeyebilir.
Önemli
Kitaplıklar Databricks Runtime 14.3 LTS ve altı kullanılırken DBFS'den yüklenebilir. Ancak, herhangi bir çalışma alanı kullanıcısı DBFS'de depolanan kitaplık dosyalarını değiştirebilir. Azure Databricks çalışma alanında kitaplıkların güvenliğini artırmak için, kitaplık dosyalarını DBFS kökünde depolamak, Databricks Runtime 15.1 ve üzerinde varsayılan olarak kullanım dışıdır ve devre dışıdır. Bkz . Kitaplıkları DBFS kökünde depolamak varsayılan olarak kullanım dışıdır ve devre dışıdır.
Databricks bunun yerine Python kitaplıkları , JAR dosyaları ve Spark bağlayıcıları dahil olmak üzere tüm kitaplıkların çalışma alanı dosyalarına veya Unity Kataloğu birimlerine yüklenmesini ya da kitaplık paketi depolarının kullanılmasını önerir. İş yükünüz bu desenleri desteklemiyorsa, bulut nesne depolama alanında depolanan kitaplıkları da kullanabilirsiniz.
Dosyayı FileStore'a kaydetme
DBFS dizinine rastgele metin dosyaları yazmak için /FileStore
kullanabilirsinizdbutils.fs.put
:
dbutils.fs.put("/FileStore/my-stuff/my-file.txt", "This is the actual text that will be saved to disk. Like a 'Hello world!' example")
Aşağıda değerini Azure Databricks dağıtımınızın çalışma alanı URL'si ile değiştirin<databricks-instance>
.
içinde /FileStore
depolanan dosyalara adresinden https://<databricks-instance>/files/<path-to-file>?o=######
web tarayıcınızdan erişilebilir. Örneğin, içinde /FileStore/my-stuff/my-file.txt
depoladığınız dosyaya, sonrasındaki numaranın o=
URL'nizdekiyle aynı olduğu yerden erişilebilirhttps://<databricks-instance>/files/my-stuff/my-file.txt?o=######
.
Not
Dosyaları dizine yerleştirmek /FileStore
için DBFS dosya yükleme arabirimlerini de kullanabilirsiniz. Bkz . DBFS'de tabloları keşfetme ve oluşturma.
Not defterlerine statik görüntüler ekleme
Statik görüntüleri not defterlerinize eklemek için konumu kullanabilirsiniz files/
:
displayHTML("<img src ='files/image.jpg'>")
veya Markdown resmi içeri aktarma söz dizimi:
%md
![my_test_image](files/image.jpg)
DBFS API'sini ve istekleri Python HTTP kitaplığını kullanarak statik görüntüleri karşıya yükleyebilirsiniz. Aşağıdaki örnekte:
- değerini Azure Databricks dağıtımınızın çalışma alanı URL'si ile değiştirin
<databricks-instance>
. - değerini kişisel erişim belirtecinizin değeriyle değiştirin
<token>
. - yerine
<image-dir>
görüntü dosyalarını karşıya yüklemek istediğiniz konumuFileStore
yazın.
Not
En iyi güvenlik uygulaması olarak otomatik araçlar, sistemler, betikler ve uygulamalarla kimlik doğrulaması yaptığınızda Databricks, çalışma alanı kullanıcıları yerine hizmet sorumlularına ait kişisel erişim belirteçlerini kullanmanızı önerir. Hizmet sorumlularına yönelik belirteçler oluşturmak için bkz . Hizmet sorumlusu için belirteçleri yönetme.
import requests
import json
import os
TOKEN = '<token>'
headers = {'Authorization': 'Bearer %s' % TOKEN}
url = "https://<databricks-instance>/api/2.0"
dbfs_dir = "dbfs:/FileStore/<image-dir>/"
def perform_query(path, headers, data={}):
session = requests.Session()
resp = session.request('POST', url + path, data=json.dumps(data), verify=True, headers=headers)
return resp.json()
def mkdirs(path, headers):
_data = {}
_data['path'] = path
return perform_query('/dbfs/mkdirs', headers=headers, data=_data)
def create(path, overwrite, headers):
_data = {}
_data['path'] = path
_data['overwrite'] = overwrite
return perform_query('/dbfs/create', headers=headers, data=_data)
def add_block(handle, data, headers):
_data = {}
_data['handle'] = handle
_data['data'] = data
return perform_query('/dbfs/add-block', headers=headers, data=_data)
def close(handle, headers):
_data = {}
_data['handle'] = handle
return perform_query('/dbfs/close', headers=headers, data=_data)
def put_file(src_path, dbfs_path, overwrite, headers):
handle = create(dbfs_path, overwrite, headers=headers)['handle']
print("Putting file: " + dbfs_path)
with open(src_path, 'rb') as local_file:
while True:
contents = local_file.read(2**20)
if len(contents) == 0:
break
add_block(handle, b64encode(contents).decode(), headers=headers)
close(handle, headers=headers)
mkdirs(path=dbfs_dir, headers=headers)
files = [f for f in os.listdir('.') if os.path.isfile(f)]
for f in files:
if ".png" in f:
target_path = dbfs_dir + f
resp = put_file(src_path=f, dbfs_path=target_path, overwrite=True, headers=headers)
if resp == None:
print("Success")
else:
print(resp)
Statik görüntüleri ölçeklendirme
DBFS'ye kaydettiğiniz görüntünün boyutunu ölçeklendirmek için, içindeki görüntü parametrelerini displayHTML
kullanarak görüntüyü konumuna /FileStore
kopyalayın ve yeniden boyutlandırın:
dbutils.fs.cp('dbfs:/user/experimental/MyImage-1.png','dbfs:/FileStore/images/')
displayHTML('''<img src="files/images/MyImage-1.png" style="width:600px;height:600px;">''')
Not defteri örneği: JavaScript kitaplığı kullanma
Bu not defteri, JavaScript kitaplığını içermek için FileStore'un nasıl kullanılacağını gösterir.