paint-brush
Kết hợp Delta Lake với MinIO cho các hồ dữ liệu nhiều đám mâytừ tác giả@minio
8,117 lượt đọc
8,117 lượt đọc

Kết hợp Delta Lake với MinIO cho các hồ dữ liệu nhiều đám mây

từ tác giả MinIO12m2023/08/17
Read on Terminal Reader

dài quá đọc không nổi

Sự kết hợp giữa MinIO và Delta Lake cho phép các doanh nghiệp có một hồ dữ liệu đa đám mây, đóng vai trò là một nguồn thông tin hợp nhất duy nhất. Khả năng truy vấn và cập nhật các bảng Delta Lake cung cấp cho doanh nghiệp những hiểu biết phong phú về doanh nghiệp và khách hàng của họ. Nhiều nhóm khác nhau truy cập các bảng Delta Lake cho các sáng kiến phân tích hoặc máy học của riêng họ, biết rằng công việc của họ được bảo mật và dữ liệu kịp thời.
featured image - Kết hợp Delta Lake với MinIO cho các hồ dữ liệu nhiều đám mây
MinIO HackerNoon profile picture
0-item
1-item
2-item

Delta Lake là một khung lưu trữ nguồn mở được sử dụng để xây dựng các hồ dữ liệu trên bộ lưu trữ đối tượng trong kiến trúc Lakehouse. Delta Lake hỗ trợ các giao dịch ACID, xử lý siêu dữ liệu có thể mở rộng và xử lý dữ liệu hàng loạt và truyền trực tuyến thống nhất. Delta Lake thường được sử dụng để cung cấp độ tin cậy, tính nhất quán và khả năng mở rộng cho các ứng dụng Apache Spark. Delta Lake chạy trên đỉnh của bộ lưu trữ hồ dữ liệu hiện có, chẳng hạn như MinIO và tương thích với API Apache Spark.


Bài viết gốc của Delta Lake ( Delta Lake: Lưu trữ bảng ACID hiệu suất cao trên các cửa hàng đối tượng đám mây ) mô tả cách nó được xây dựng để lưu trữ đối tượng đám mây. Khi Vertica kiểm tra việc sử dụng Delta Lake cho các bảng bên ngoài, họ đã dựa vào MinIO. Khách hàng HPE Ezmeral Runtime Enterprise chạy Delta Lake trên MinIO . MinIO hỗ trợ các yêu cầu về độ bền của Delta Lake vì MinIO tuân theo các mô hình nhất quán đọc-sau-ghi và liệt kê-sau-ghi nghiêm ngặt cho tất cả các hoạt động i/o ở cả chế độ phân tán và độc lập và được thừa nhận rộng rãi để chạy khối lượng công việc của Delta Lake.


Nhiều tổ chức dựa vào các kho lưu trữ đối tượng gốc trên đám mây như MinIO và AWS S3 để chứa các tập dữ liệu lớn có cấu trúc, bán cấu trúc và phi cấu trúc. Mỗi bảng được lưu trữ dưới dạng một tập hợp các đối tượng là Parquet hoặc ORC và được sắp xếp thành các phân vùng. Các truy vấn đối với các tệp lớn về cơ bản là các lần quét thực hiện nhanh chóng.


Nếu không có Delta Lake, khối lượng công việc Spark phức tạp hơn, đặc biệt là những khối lượng công việc sửa đổi, thêm hoặc xóa dữ liệu, sẽ gặp phải những thách thức về hiệu suất và tính chính xác khi tải nhiều ứng dụng/nhiều người dùng. Các cập nhật đa đối tượng không phải là nguyên tử và các truy vấn không bị cô lập, nghĩa là nếu việc xóa được tiến hành trong một truy vấn thì các truy vấn đồng thời khác sẽ nhận được một phần kết quả khi truy vấn ban đầu cập nhật từng đối tượng. Quá trình ghi lùi lại rất phức tạp và sự cố xảy ra trong quá trình cập nhật có thể dẫn đến bảng bị hỏng. Kẻ giết người hiệu suất thực sự là siêu dữ liệu – đối với các bảng lớn với hàng triệu đối tượng là các tệp Parquet chứa hàng tỷ hoặc hàng nghìn tỷ bản ghi, hoạt động siêu dữ liệu có thể khiến các ứng dụng được xây dựng trên hồ dữ liệu dừng lại.



Delta Lake được thiết kế để kết hợp độ tin cậy trong giao dịch của cơ sở dữ liệu với khả năng mở rộng theo chiều ngang của hồ dữ liệu. Delta Lake được xây dựng để hỗ trợ khối lượng công việc kiểu OLAP với lớp lưu trữ bảng ACID trên các kho lưu trữ đối tượng gốc trên đám mây, chẳng hạn như MinIO. Như được mô tả trong bài viết Hồ Delta: lưu trữ bảng ACID hiệu suất cao trên các cửa hàng đối tượng trên đám mây , “ý tưởng cốt lõi của Hồ Delta rất đơn giản: chúng tôi duy trì thông tin về những đối tượng nào là một phần của bảng Delta theo cách ACID, sử dụng một lệnh ghi nhật ký phía trước được lưu trữ trong kho lưu trữ đối tượng đám mây.” Các đối tượng được mã hóa trong Parquet và có thể được đọc bởi một công cụ hiểu Parquet. Nhiều đối tượng có thể được cập nhật cùng một lúc “theo cách tuần tự hóa trong khi vẫn đạt được hiệu suất đọc và ghi song song cao”. Nhật ký chứa siêu dữ liệu, chẳng hạn như số liệu thống kê tối thiểu/tối đa cho mỗi tệp, "cho phép tìm kiếm siêu dữ liệu theo thứ tự cường độ nhanh hơn" so với tìm kiếm tệp trực tiếp trong kho đối tượng.


Hồ Delta cung cấp những điều sau đây:


  • Đảm bảo ACID: Delta Lake đảm bảo rằng tất cả các thay đổi đối với dữ liệu được ghi vào bộ lưu trữ và được cam kết về độ bền trong khi có sẵn cho người dùng và ứng dụng một cách nguyên tử. Không còn tệp bị hỏng hoặc một phần nào trong kho dữ liệu của bạn nữa.
  • Xử lý dữ liệu và siêu dữ liệu có thể mở rộng: Tất cả các lần đọc và ghi bằng Spark (hoặc một công cụ xử lý phân tán khác) có thể mở rộng thành petabyte. Không giống như hầu hết các định dạng lưu trữ và công cụ truy vấn khác, Delta Lake tận dụng Spark để mở rộng quy mô tất cả quá trình xử lý siêu dữ liệu và có thể xử lý hiệu quả siêu dữ liệu của hàng tỷ tệp cho các bảng tỷ lệ petabyte.
  • Lịch sử kiểm tra và du hành thời gian: Nhật ký giao dịch của Delta Lake ghi lại chi tiết về mọi sửa đổi được thực hiện đối với dữ liệu, bao gồm toàn bộ quá trình kiểm tra các thay đổi. Ảnh chụp nhanh dữ liệu cho phép nhà phát triển truy cập và hoàn nguyên về các phiên bản dữ liệu trước đó để kiểm tra, khôi phục hoặc vì bất kỳ lý do nào khác.
  • Thực thi lược đồ và phát triển lược đồ: Delta Lake tự động ngăn chặn việc chèn dữ liệu không khớp với lược đồ bảng hiện có. Tuy nhiên, lược đồ bảng có thể được phát triển một cách rõ ràng và an toàn để phù hợp với những thay đổi đối với cấu trúc và định dạng dữ liệu.
  • Hỗ trợ xóa, cập nhật và hợp nhất: Hầu hết các khung xử lý phân tán không hỗ trợ các hoạt động sửa đổi dữ liệu nguyên tử trên hồ dữ liệu. Ngược lại, Delta Lake hỗ trợ các hoạt động hợp nhất, cập nhật và xóa cho các trường hợp sử dụng phức tạp như thu thập dữ liệu thay đổi, hoạt động thay đổi kích thước chậm và phát trực tuyến.
  • Hợp nhất hàng loạt và phát trực tuyến: Bảng Delta Lake có khả năng hoạt động ở chế độ hàng loạt và dưới dạng nguồn phát trực tuyến và phần chìm. Delta Lake hoạt động trên nhiều độ trễ khác nhau bao gồm truyền dữ liệu nhập và chèn lấp lịch sử hàng loạt để cung cấp các truy vấn tương tác thời gian thực. Công việc truyền trực tuyến ghi các đối tượng nhỏ vào bảng ở độ trễ thấp, sau đó kết hợp chúng theo giao dịch thành các đối tượng lớn hơn để có hiệu suất tốt hơn.
  • Bộ nhớ đệm: Dựa vào lưu trữ đối tượng có nghĩa là các đối tượng trong bảng Delta và nhật ký của nó là bất biến và có thể được lưu vào bộ nhớ đệm cục bộ một cách an toàn - bất kể cục bộ trên multicloud ở đâu.


Kiến trúc Lakehouse, đặc biệt là Delta Lake, mang lại chức năng mới quan trọng cho các hồ dữ liệu được xây dựng trên bộ lưu trữ đối tượng. Delta Lake hoạt động với danh sách ứng dụng và công cụ tính toán ngày càng lớn như Spark, Starburst, Trino, Flink và Hive, đồng thời bao gồm các API cho Scala, Java, Rust, Ruby và Python. Được xây dựng cho đám mây, Kubernetes-native MinIO cho phép các ứng dụng hồ dữ liệu hoạt động hiệu quả, linh hoạt và an toàn ở mọi nơi - ở vùng biên, trong trung tâm dữ liệu và trong đám mây công cộng/riêng tư.


Tập tin hồ Delta

Bảng Delta là một tập hợp các tệp được lưu trữ cùng nhau trong một thư mục (đối với hệ thống tệp) hoặc bộ chứa (đối với MinIO và bộ lưu trữ đối tượng khác). Để đọc và ghi từ bộ lưu trữ đối tượng, Delta Lake sử dụng sơ đồ đường dẫn để xác định động hệ thống lưu trữ và sử dụng triển khai LogStore tương ứng để đảm bảo ACID. Đối với MinIO, bạn sẽ sử dụng S3A, xem Cấu hình lưu trữ — Tài liệu Delta Lake . Điều quan trọng là hệ thống lưu trữ cơ bản được sử dụng cho Delta Lake có khả năng đọc/ghi nguyên tử đồng thời, cũng như MinIO.


Tạo bảng Delta thực sự là ghi tệp vào thư mục hoặc nhóm. Các bảng delta được tạo (mở) bằng cách viết (đọc) Spark DataFrame và chỉ định định dạng và đường dẫn delta . Trong Scala, ví dụ:


 // Create a Delta table on MinIO: spark.range(5).write.format("delta").save("s3a://<your-minio-bucket>/<path-to-delta-table>") // Read a Delta table on S3: spark.read.format("delta").load("s3a://<your-mnio-bucket>/<path-to-delta-table>").show()


Delta Lake dựa trên một nhóm trên mỗi bảng và các nhóm thường được mô hình hóa theo các đường dẫn hệ thống tệp. Bảng Delta Lake là một thùng chứa dữ liệu, siêu dữ liệu và nhật ký giao dịch. Bảng được lưu trữ ở định dạng Parquet. Các bảng có thể được phân vùng thành nhiều tệp. MinIO hỗ trợ S3 LIST để liệt kê các đối tượng một cách hiệu quả bằng cách sử dụng các đường dẫn kiểu hệ thống tệp. MinIO cũng hỗ trợ các yêu cầu phạm vi byte để đọc tập hợp con của tệp Parquet lớn hiệu quả hơn.



MinIO là một ngôi nhà tuyệt vời cho các bảng Delta Lake do hiệu suất hàng đầu trong ngành. Sự kết hợp giữa khả năng mở rộng và hiệu suất cao của MinIO đặt mọi khối lượng công việc, bất kể đòi hỏi khắt khe đến đâu, đều nằm trong tầm tay. MinIO có khả năng đạt hiệu suất cực cao - điểm chuẩn gần đây đạt được là 325 GiB/giây (349 GB/giây) trên GET và 165 GiB/giây (177 GB/giây) trên PUT chỉ với 32 nút SSD NVMe bán sẵn. MinIO không chỉ cung cấp hiệu suất cần thiết để cung cấp năng lượng cho khối lượng công việc đòi hỏi khắt khe nhất trên Delta Lake.


Có khả năng các bộ chứa Delta Lake sẽ chứa nhiều tệp Parquet và JSON, những tệp này thực sự phù hợp với tất cả các tối ưu hóa tệp nhỏ mà chúng tôi đã tích hợp vào MinIO để sử dụng làm hồ dữ liệu. Các đối tượng nhỏ được lưu nội tuyến với siêu dữ liệu, giảm IOPS cần thiết để đọc và ghi các tệp nhỏ như giao dịch Delta Lake.


Hầu hết các doanh nghiệp yêu cầu chức năng đa đám mây cho Delta Lake. MinIO bao gồm sao chép chủ động-tích cực để đồng bộ hóa dữ liệu giữa các vị trí - tại chỗ, trong đám mây công cộng/riêng tư và ở biên. Sao chép tích cực-chủ động cho phép doanh nghiệp kiến trúc để có khả năng phục hồi đa vùng địa lý và chuyển đổi dự phòng nóng-nóng nhanh. Mỗi nhóm hoặc bảng Delta Lake có thể được định cấu hình để sao chép riêng biệt nhằm mang lại tính khả dụng và bảo mật cao nhất.

Giao dịch ACID với Delta Lake

Việc thêm các giao dịch ACID (Nguyên tử, Tính nhất quán, Cách ly và Độ bền) vào hồ dữ liệu là một vấn đề khá lớn vì giờ đây các tổ chức có quyền kiểm soát tốt hơn và do đó tin tưởng hơn vào khối lượng dữ liệu được lưu trữ trong hồ dữ liệu. Trước đây, các doanh nghiệp dựa vào Spark để làm việc với các hồ dữ liệu thiếu API nguyên tử và giao dịch ACID, nhưng giờ đây, Delta Lake đã làm được điều đó. Dữ liệu có thể được cập nhật sau khi được chụp và ghi, đồng thời với sự hỗ trợ cho ACID, dữ liệu sẽ không bị mất nếu ứng dụng gặp sự cố trong quá trình vận hành. Delta Lake thực hiện điều này bằng cách đóng vai trò trung gian giữa Spark và MinIO để đọc và ghi dữ liệu.


Trung tâm của Delta Lake là DeltaLog , một bản ghi theo thứ tự các giao dịch được thực hiện bởi người dùng và ứng dụng. Mọi hoạt động (như CẬP NHẬT hoặc CHÈN) được thực hiện trên bảng Delta Lake bởi người dùng là một cam kết nguyên tử bao gồm nhiều hành động hoặc công việc. Khi mọi hành động hoàn thành thành công, thì cam kết được ghi lại dưới dạng một mục trong DeltaLog. Nếu bất kỳ công việc nào không thành công, thì cam kết sẽ không được ghi lại trong DeltaLog. Nếu không có tính nguyên tử, dữ liệu có thể bị hỏng trong trường hợp lỗi phần cứng hoặc phần mềm dẫn đến dữ liệu chỉ được ghi một phần.


Delta Lake chia các hoạt động thành một hoặc nhiều hành động sau:


  • Thêm tệp - thêm tệp

  • Xóa tệp - xóa tệp

  • Cập nhật siêu dữ liệu - ghi lại các thay đổi đối với tên, lược đồ hoặc phân vùng của bảng

  • Đặt giao dịch - ghi lại rằng một công việc phát trực tuyến đã cam kết dữ liệu

  • Thông tin cam kết - thông tin về cam kết bao gồm hoạt động, người dùng và thời gian

  • Thay đổi giao thức - cập nhật DeltaLog lên giao thức phần mềm mới nhất


Nó không phức tạp như nó xuất hiện. Ví dụ: nếu người dùng thêm một cột mới vào bảng và thêm dữ liệu vào đó, thì Delta Lake sẽ chia nhỏ điều đó thành các hành động thành phần của nó - cập nhật siêu dữ liệu để thêm cột và thêm tệp cho mỗi tệp mới được thêm - và thêm chúng vào DeltaLog khi chúng hoàn thành.


Delta Lake dựa vào kiểm soát đồng thời lạc quan để cho phép nhiều người đọc và người viết của một bảng nhất định làm việc trên bảng cùng một lúc. Kiểm soát đồng thời lạc quan giả định rằng các thay đổi đối với một bảng được thực hiện bởi những người dùng khác nhau có thể hoàn thành mà không xung đột. Khi khối lượng dữ liệu tăng lên thì khả năng người dùng sẽ làm việc trên các bảng khác nhau cũng tăng theo. Delta Lake tuần tự hóa các cam kết và tuân theo quy tắc loại trừ lẫn nhau nếu hai hoặc nhiều cam kết diễn ra cùng một lúc. Khi làm như vậy, Delta Lake đạt được sự cô lập cần thiết cho ACID và bảng sẽ trông giống nhau sau nhiều lần ghi đồng thời giống như nếu những lần ghi đó xảy ra nối tiếp và riêng biệt với nhau.


Khi người dùng chạy một truy vấn mới trên một bảng mở đã được sửa đổi kể từ lần cuối nó được đọc, Spark sẽ tham khảo DeltaLog để xác định xem các giao dịch mới đã được đăng lên bảng chưa và cập nhật bảng của người dùng với những thay đổi mới đó. Điều này đảm bảo rằng phiên bản bảng của người dùng được đồng bộ hóa với bảng chính trong Delta Lake cho hoạt động gần đây nhất và người dùng không thể thực hiện các cập nhật xung đột cho bảng.


DeltaLog, kiểm soát đồng thời lạc quan và thực thi lược đồ (kết hợp với khả năng phát triển lược đồ) đảm bảo cả tính nguyên tử và tính nhất quán.

Tìm hiểu về DeltaLog

Khi người dùng tạo bảng Delta Lake, nhật ký giao dịch của bảng đó sẽ tự động được tạo trong thư mục con _delta_log . Khi người dùng sửa đổi bảng, mỗi lần xác nhận được ghi dưới dạng tệp JSON vào thư mục con _delta_log theo thứ tự tăng dần, tức là 000000.json , 000001.json , 000002.json và hơn thế nữa.



Giả sử chúng ta thêm các bản ghi mới vào bảng của mình từ các tệp dữ liệu 1.parquet2.parquet . Giao dịch đó được thêm vào DeltaLog và được lưu dưới dạng tệp 000000.json . Sau đó, chúng tôi xóa các tệp đó và thay vào đó thêm tệp mới 3.parquet . Những hành động đó được ghi lại dưới dạng một tệp mới, 000001.json .



Sau khi 1.parquet2.parquet được thêm vào, chúng đã bị xóa. Nhật ký giao dịch chứa cả hai hoạt động mặc dù chúng phủ định lẫn nhau. Delta Lake giữ lại tất cả các cam kết nguyên tử để kích hoạt lịch sử kiểm toán hoàn chỉnh và các tính năng du hành thời gian cho người dùng thấy cách một bảng nhìn vào một thời điểm cụ thể. Hơn nữa, các tệp không bị xóa nhanh chóng khỏi bộ lưu trữ cho đến khi công việc VACUUM được chạy. Tạo phiên bản MinIO cung cấp một lớp đảm bảo khác chống lại việc xóa do vô tình.

Độ bền với Delta Lake và MinIO

Delta Lake đạt được độ bền bằng cách lưu trữ các bảng và nhật ký giao dịch trên phương tiện liên tục. Các tệp không bao giờ bị ghi đè và phải được xóa tích cực. Tất cả các thay đổi dữ liệu được ghi vào bộ lưu trữ đều có sẵn cho người dùng nguyên bản khi chúng xảy ra. Các tệp một phần và bị hỏng đã trở thành dĩ vãng. Delta Lake không giữ các bảng và nhật ký RAM trong một thời gian dài và ghi chúng trực tiếp vào MinIO. Miễn là dữ liệu cam kết được ghi lại trong DeltaLog và các tệp JSON được ghi vào bộ chứa, dữ liệu sẽ bền trong trường hợp xảy ra sự cố hệ thống hoặc công việc.


MinIO đảm bảo độ bền sau khi một bảng và các thành phần của nó được viết thông qua nhiều cơ chế:


  • Mã hóa tẩy chia các tệp dữ liệu thành các khối dữ liệu và chẵn lẻ rồi mã hóa nó để dữ liệu chính có thể phục hồi được ngay cả khi một phần của dữ liệu được mã hóa không có sẵn. Các hệ thống lưu trữ phân tán có thể mở rộng theo chiều ngang dựa vào mã hóa xóa để bảo vệ dữ liệu bằng cách lưu dữ liệu được mã hóa trên nhiều ổ đĩa và nút. Nếu một ổ đĩa hoặc nút bị lỗi hoặc dữ liệu bị hỏng, dữ liệu gốc có thể được xây dựng lại từ các khối được lưu trên các ổ đĩa và nút khác.
  • Bit Rot Protection nắm bắt và chữa lành các đối tượng bị hỏng một cách nhanh chóng để loại bỏ mối đe dọa thầm lặng này đối với độ bền của dữ liệu
  • Tính bất biến của nhóm và đối tượng bảo vệ dữ liệu được lưu vào MinIO khỏi bị xóa hoặc sửa đổi bằng cách sử dụng kết hợp các cơ chế khóa, lưu giữ đối tượng và các cơ chế quản trị khác. Các đối tượng được ghi vào MinIO không bao giờ bị ghi đè.
  • Bộ chứa và Phiên bản đối tượng bảo vệ thêm các đối tượng. MinIO duy trì bản ghi mọi phiên bản của mọi đối tượng, ngay cả khi nó bị xóa, cho phép bạn quay ngược thời gian (giống như du hành thời gian của Delta Lake). Lập phiên bản là thành phần chính của Quản lý vòng đời dữ liệu , cho phép quản trị viên di chuyển các nhóm giữa các bậc, chẳng hạn như sử dụng NVMe cho khối lượng công việc chuyên sâu về hiệu suất và đặt ngày hết hạn trên các phiên bản để chúng được xóa khỏi hệ thống nhằm cải thiện hiệu quả lưu trữ.


MinIO bảo mật các bảng Delta Lake bằng cách sử dụng mã hóa và điều chỉnh quyền truy cập vào chúng bằng cách sử dụng kết hợp các biện pháp kiểm soát truy cập dựa trên chính sách và IAM. MinIO mã hóa dữ liệu trong quá trình truyền bằng TLS và dữ liệu trên các ổ đĩa có mã hóa cấp đối tượng chi tiết bằng các thuật toán mã hóa tiêu chuẩn ngành, hiện đại, chẳng hạn như AES-256-GCM, ChaCha20-Poly1305 và AES-CBC. MinIO tích hợp với các nhà cung cấp danh tính bên ngoài như ActiveDirectory/LDAP, Okta và Keycloak cho IAM. Sau đó, người dùng và nhóm phải tuân theo PBAC tương thích với AWS IAM khi họ cố gắng truy cập các bảng Delta Lake.

Hướng dẫn về Delta Lake và MinIO

Phần này giải thích cách nhanh chóng bắt đầu đọc và ghi các bảng Delta trên MinIO bằng chế độ một cụm.

điều kiện tiên quyết

  1. Tải xuống và cài đặt Apache Spark.
  2. Tải xuống và cài đặt MinIO. Ghi lại địa chỉ IP, cổng TCP, khóa truy cập và khóa bí mật.
  3. Tải xuống và cài đặt Máy khách MinIO.
  4. Các tệp jar sau đây là bắt buộc. Bạn có thể sao chép các lọ vào bất kỳ vị trí cần thiết nào trên máy Spark, ví dụ /home/spark .
  5. Hadoop - hadoop-aws-2.6.5.jar - Delta Lake cần lớp org.apache.hadoop.fs.s3a.S3AFileSystem từ gói hadoop-aws , gói này triển khai API FileSystem của Hadoop cho S3. Đảm bảo rằng phiên bản của gói này khớp với phiên bản Hadoop mà Spark được tạo.
  6. AWS - aws-java-sdk-1.7.4.jar

Thiết lập Apache Spark với Delta Lake

Khởi động trình bao Spark (Scala hoặc Python) với Delta Lake và chạy các đoạn mã một cách tương tác.


Trong Scala:

 bin/spark-shell --packages io.delta:delta-core_2.12:1.2.1 --conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog"

Định cấu hình Delta Lake và AWS S3 trên Apache Spark

Chạy lệnh sau để khởi chạy trình bao Spark với hỗ trợ Delta Lake và S3 cho MinIO:


 bin/spark-shell \ --packages io.delta:delta-core_2.12:1.2.1,org.apache.hadoop:hadoop-aws:3.3.1 \ --conf spark.hadoop.fs.s3a.access.key=<your-MinIO-access-key> \ --conf spark.hadoop.fs.s3a.secret.key=<your-MinIO-secret-key> --conf "spark.hadoop.fs.s3a.endpoint=<your-MinIO-IP:port> \ --conf "spark.databricks.delta.retentionDurationCheck.enabled=false" \ --conf "spark.sql.extensions=io.delta.sql.DeltaSparkSessionExtension" \ --conf "spark.sql.catalog.spark_catalog=org.apache.spark.sql.delta.catalog.DeltaCatalog"

Tạo một nhóm trong MinIO

Sử dụng Máy khách MinIO để tạo thùng cho Delta Lake:

 mc alias set minio http://<your-MinIO-IP:port> <your-MinIO-access-key> <your-MinIO-secret-key> mc mb minio\delta-lake

Tạo bảng Delta Lake thử nghiệm trên MinIO

Hãy dùng thử và tạo một bảng Delta Lake đơn giản bằng Scala:

 // Create a Delta table on MinIO: spark.range(500).write.format("delta").save("s3a://delta-lake/demo1")


Bạn sẽ thấy kết quả nào đó cho biết Spark đã viết bảng thành công.


Mở trình duyệt để đăng nhập vào MinIO tại http://<your-MinIO-IP:9001> bằng khóa truy cập và khóa bí mật của bạn. Bạn sẽ thấy bảng Delta Lake trong thùng:


MinIO và Delta Lake cho các giao dịch ACID hiệu suất cao trên Data Lakes

Sự kết hợp giữa MinIO và Delta Lake cho phép các doanh nghiệp có một kho dữ liệu đa đám mây, đóng vai trò là một nguồn thông tin hợp nhất duy nhất. Khả năng truy vấn và cập nhật các bảng Delta Lake cung cấp cho doanh nghiệp những hiểu biết phong phú về doanh nghiệp và khách hàng của họ. Nhiều nhóm khác nhau truy cập các bảng Delta Lake cho các sáng kiến phân tích hoặc học máy của riêng họ, biết rằng công việc của họ được bảo mật và dữ liệu kịp thời.


Để tìm hiểu sâu hơn, hãy tải xuống MinIO và tự mình xem hoặc tạo một phiên bản thị trường trên bất kỳ đám mây công cộng nào. Bạn có câu hỏi? Hỏi ngay trên Slack hoặc qua [email protected].


Cũng được xuất bản ở đây .