Bài viết này sẽ hướng dẫn bạn cách thực hiện các tình huống phổ biến bằng cách sử dụng bộ lưu trữ Blob. Các mẫu được viết bằng Python và sử dụng SDK lưu trữ Microsoft Azure cho Python. Các tình huống được đề cập bao gồm tải lên, liệt kê, tải xuống và xóa các đốm màu
[SẮC. BAO GỒM lưu trữ-blob-khái niệm-bao gồm]
[SẮC. BAO GỒM lưu trữ-tạo-tài khoản-bao gồm]
Tạo một thùng chứa
Dựa trên loại blob bạn muốn sử dụng, hãy tạo một đối tượng BlockBlobService, AppendBlobService hoặc PageBlobService. Đoạn mã sau sử dụng đối tượng BlockBlobService. Thêm phần sau vào gần đầu bất kỳ tệp Python nào mà bạn muốn truy cập theo chương trình Bộ lưu trữ Azure Block Blob
from azure.storage.blob import BlockBlobService
Đoạn mã sau tạo đối tượng BlockBlobService bằng tên tài khoản lưu trữ và khóa tài khoản. Thay 'myaccount' và 'mykey' bằng tên tài khoản và khóa của bạn
block_blob_service = BlockBlobService[account_name='myaccount', account_key='mykey']
[SẮC. BAO GỒM lưu trữ-vùng chứa-đặt tên-quy tắc-bao gồm]
Trong ví dụ mã sau, bạn có thể sử dụng đối tượng BlockBlobService để tạo vùng chứa nếu nó không tồn tại
block_blob_service.create_container['mycontainer']
Theo mặc định, vùng chứa mới là riêng tư, vì vậy bạn phải chỉ định khóa truy cập bộ nhớ của mình [như bạn đã làm trước đó] để tải xuống các đốm màu từ vùng chứa này. Nếu bạn muốn cung cấp các đốm màu trong vùng chứa cho mọi người, bạn có thể tạo vùng chứa và chuyển cấp truy cập công khai bằng mã sau
from azure.storage.blob import PublicAccess
block_blob_service.create_container['mycontainer', public_access=PublicAccess.Container]
Ngoài ra, bạn có thể sửa đổi vùng chứa sau khi đã tạo vùng chứa bằng mã sau
block_blob_service.set_container_acl['mycontainer', public_access=PublicAccess.Container]
Sau thay đổi này, bất kỳ ai trên Internet đều có thể nhìn thấy các đốm màu trong vùng chứa công cộng nhưng chỉ bạn mới có thể sửa đổi hoặc xóa chúng
Tải một đốm màu lên vùng chứa
Để tạo một khối blob và tải dữ liệu lên, hãy sử dụng các phương thức create_blob_from_path, create_blob_from_stream, create_blob_from_bytes hoặc create_blob_from_text. Chúng là các phương thức cấp cao thực hiện phân đoạn cần thiết khi kích thước của dữ liệu vượt quá 64 MB
create_blob_from_path tải lên nội dung của tệp từ đường dẫn đã chỉ định và create_blob_from_stream tải lên nội dung từ tệp/luồng đã mở. create_blob_from_bytes tải lên một mảng byte và create_blob_from_text tải lên giá trị văn bản đã chỉ định bằng cách sử dụng mã hóa đã chỉ định [mặc định là UTF-8]
Ví dụ sau tải lên nội dung của hoàng hôn. png vào blob myblob
from azure.storage.blob import ContentSettings
block_blob_service.create_blob_from_path[
'mycontainer',
'myblockblob',
'sunset.png',
content_settings=ContentSettings[content_type='image/png']
]
Liệt kê các đốm màu trong một vùng chứa
Để liệt kê các đốm màu trong một vùng chứa, hãy sử dụng phương thức list_blobs. Phương thức này trả về một trình tạo. Đoạn mã sau xuất tên của từng đốm màu trong vùng chứa ra bàn điều khiển
generator = block_blob_service.list_blobs['mycontainer']
for blob in generator:
print[blob.name]
Tải xuống các đốm màu
Để tải xuống dữ liệu từ blob, hãy sử dụng get_blob_to_path, get_blob_to_stream, get_blob_to_bytes hoặc get_blob_to_text. Chúng là các phương thức cấp cao thực hiện phân đoạn cần thiết khi kích thước của dữ liệu vượt quá 64 MB
Ví dụ sau minh họa việc sử dụng get_blob_to_path để tải xuống nội dung của blob myblob và lưu trữ nó cho đến khi mặt trời lặn. tập tin png
block_blob_service.get_blob_to_path['mycontainer', 'myblockblob', 'out-sunset.png']
Xóa một đốm màu
Cuối cùng, để xóa một đốm màu, hãy gọi delete_blob
________số 8
Viết cho một append blob
Một đốm màu chắp thêm được tối ưu hóa cho các hoạt động chắp thêm, chẳng hạn như ghi nhật ký. Giống như một block blob, một append blob bao gồm các khối, nhưng khi bạn thêm một khối mới vào một append blob, nó luôn được thêm vào cuối blob. Bạn không thể cập nhật hoặc xóa một khối hiện có trong một đốm màu nối thêm. ID khối cho một blob nối thêm không được hiển thị như chúng dành cho một blob khối
Mỗi khối trong một đốm màu nối thêm có thể có kích thước khác nhau, tối đa là 4 MB và một đốm màu nối thêm có thể bao gồm tối đa 50.000 khối. Do đó, kích thước tối đa của một append blob lớn hơn 195 GB một chút [4 MB X 50.000 khối]
Ví dụ dưới đây tạo một append blob mới và thêm một số dữ liệu vào nó, mô phỏng một thao tác ghi nhật ký đơn giản
Như Databricks đã thảo luận trong bài viết này rằng trong quá trình làm việc trên sổ ghi chép, bạn có thể gắn bộ chứa Blob Storage hoặc thư mục bên trong bộ chứa vào Hệ thống tệp Databricks. Toàn bộ điểm gắn kết với vùng lưu trữ blob chỉ đơn giản là sử dụng liên kết viết tắt tới dữ liệu của bạn bằng hệ thống tệp databricks thay vì phải tham chiếu toàn bộ URL tới vùng chứa blob của bạn mỗi khi bạn cần đọc/ghi dữ liệu từ blob đó . Bạn có thể tìm thêm chi tiết về cách lắp và cách sử dụng trong các bài viết được tham khảo ở trên
Mục đích của bài viết này là đề xuất một cách để kiểm tra xem mountpoint đã được tạo chưa và chỉ cố gắng tạo nó nếu nó không tồn tại bằng cách sử dụng python
Điều này có thể được thực hiện một cách đơn giản nếu chúng ta biết cách liệt kê các điểm gắn kết hiện có bằng python. May mắn thay, databricks cung cấp điều này cho chúng tôi bằng cách sử dụng dbutils. fs. lệnh mount[]. Để truy cập điểm gắn kết thực tế, chúng ta có thể làm như thế này
for mount in dbutils.fs.mounts[]: print [mount.mountPoint]
Biết cách truy cập các điểm gắn kết cho phép chúng tôi viết một số cú pháp Python để chỉ gắn kết nếu điểm gắn kết không tồn tại. Mã sẽ giống như sau
block_blob_service = BlockBlobService[account_name='myaccount', account_key='mykey']
0Hoặc, bạn có thể thêm trình xử lý lỗi để in thông báo lỗi nếu đốm màu đã được gắn, như vậy