Birçoğumuz daha sonra gelişen gereksinimlere dayanarak verilerde değişiklikler yaptık. Bunu anladığımızda geriye dönmemiz imkansız hale gelir. Değişim sadece sabit değildir; karmaşık bir yaklaşım gerektiren verileri yönetmenin önemli bir parçasıdır. Dremio'nun veri kataloğu Nessie'nin Git benzeri işlevselliğine girin.
Git'in yazılım geliştirmenin temeli haline gelmesi gibi, veri mühendisleri de paralel çalışmak, veri sürümlerini karşılaştırmak, üretimdeki değişiklikleri desteklemek ve gerektiğinde verileri geri almak için benzer araçlara ihtiyaç duyar. Nessie, veri mühendislerine veri sürümlerini, dalları, birleştirmeleri ve taahhütleri yönetmek için Git benzeri bir sürüm kontrol sistemi sağlar. Bu, birden fazla veri mühendisinin aynı anda verilerle çalıştığı ve verileri dönüştürdüğü durumlarda çok yararlı olabilir. Nessie, ana dal biçiminde tek bir doğruluk kaynağı sağlarken her mühendisin ayrı dallarda çalışmasına olanak tanır. Bu işlevsellik, veri mühendisliği ekiplerine, aralıksız değişim karşısında veri kalitesini işbirliği içinde koruma gücü verir.
Bu makale, veri mühendisliği iş akışlarınızda veri kalitesini ve işbirliğini geliştirmek için Nessie, Dremio ve MinIO'nun birlikte nasıl çalıştığını gösteren adım adım bir kılavuz sağlar. İster bir veri mühendisi, ister makine öğrenimi mühendisi, ister yalnızca modern bir veri gölü meraklısı olun, bu blog sizi veri sürümü oluşturma uygulamalarınızı etkili bir şekilde geliştirmek için gereken bilgi ve araçlarla donatır.
Nessie, test etmenize, geliştirmenize ve üretime aktarmanıza olanak tanıyan Git benzeri iş yüklerine olanak tanır. Bazı temel kavramları inceleyelim:
Şubeler: Tıpkı Git'te olduğu gibi Nessie'deki şubeler de farklı veri mühendisliği görevleri üzerinde aynı anda çalışmanıza olanak tanır. Örneğin özellik geliştirme, veri temizleme ve veri dönüşümüne yönelik bir şubeniz olabilir. Her dalın kendi veri değişiklikleri kümesi olabilir.
Taahhütler: Nessie'de taahhüt, verilerin belirli bir andaki anlık görüntüsünü temsil eder. Verilerinizde değişiklik yaptığınızda, bu değişiklikleri kaydeden yeni bir taahhüt oluşturursunuz. Taahhütler belirli bir şubeye bağlıdır. Verilerinizi kararlı veya iyi olduğu bilinen bir duruma döndürmeniz gerektiğinde Nessie, belirli bir işlemi seçip o veri sürümüne geri dönmeyi kolaylaştırır. Bu, veri kalitesini ve tutarlılığını sağlar.
Birleştirmeler : Nessie, değişiklikleri bir daldan diğerine birleştirmenize olanak tanır. Bu, Git'teki kod değişikliklerini birleştirmeye benzer. Bir dalı birleştirdiğinizde o dalda yapılan veri değişiklikleri hedef dalın parçası haline gelir.
Dremio , açık kaynaklı bir platform olarak çalışan, veri keşfi, dönüşümü ve işbirliğine dayalı çalışma için sezgisel bir self-servis arayüz sunan dağıtılmış bir analiz motorudur. Tasarımı temel alınmıştır
Dremio'nun Kubernetes ile nasıl dağıtılacağını ve ayrıca nasıl kurulacağını zaten araştırdık.
MinIO, yüksek performanslı nesne depolamadır. Olağanüstü olmasıyla ünlü
İhtiyacınız olacak
Öğreticinin bu kısmı Dremio'nun
Başlamak için bir terminal açın ve repoyu kopyaladığınız/indirdiğiniz klasöre gidin ve Dremio'yu başlatmak için aşağıdaki komutu çalıştırın.
docker-compose up dremio
Birkaç dakika bekleyin ve ardından Dremio'ya erişmek için http://localhost:9047
adresine gidin. İstenen alanları güncelleyin ve ardından İleri'ye tıklayın.
Daha sonra MinIO'yu başlatmak için aşağıdaki komutu çalıştırın.
docker-compose up minio
Aşağıdaki son docker-compose up
komutu Nessie'yi başlatacaktır.
docker-compose up nessie
minioadmin:minioadmin
kullanıcı adı ve şifresiyle MinIO'da oturum açmak için http://localhost:9001
adresine gidin. Bir paket oluşturmanız istenecektir.
iceberg-datalake
adında bir tane yapın.
Daha sonra http://localhost:9047
adresinden Dremio'ya geri dönün ve Kaynak Ekle'ye tıklayın ve Nessie'yi seçin.
nessie
olarak ayarlayınhttp://nessie:19120/api/v2
olarak ayarlayınnone
olarak ayarlayın
Henüz Kaydet'e tıklamayın. Bunun yerine soldaki gezinme panelinde Depolama'yı tıklayın. MinIO, S3-API uyumlu nesne depolamadır ve AWS S3 ile aynı bağlantı yollarını kullanabilir.
minioadmin
ayarlayınminioadmin
ayarlayın/iceberg-datalake
olarak ayarlayın
Sonraki talimat seti için aşağı kaydırın.
Connection Properties
altındaki Add Property
düğmesine tıklayın.fs.s3a.path.style.access
true
olmasıfs.s3a.endpoint
minio:9000
dremio.s3.compat
true
çevirmeEncrypt connection
işaretini kaldırın
Daha sonra Kaydet'e tıklayın. Artık veri kaynaklarınızda Nessie Kataloglarını görmelisiniz.
Dremio'da sol taraftaki SQL Runner'a gidin. Metin düzenleyicinin sağ üst kısmındaki Context
Nessie kaynağımıza ayarlandığından emin olun. Aksi takdirde, bu sorguyu çalıştırmak için yalnızca SalesData
yerine nessie.SalesData
gibi bağlama başvurmanız gerekecektir. Aşağıdaki SQL'i kopyalayıp yapıştırın ve çalıştırın.
CREATE TABLE SalesData ( id INT, product_name VARCHAR, sales_amount DECIMAL, transaction_date DATE ) PARTITION BY (transaction_date);
Yeni oluşturduğunuz tabloya veri eklemek için aşağıdaki sorguyu çalıştırın.
INSERT INTO SalesData (id, product_name, sales_amount, transaction_date) VALUES (1, 'ProductA', 1500.00, '2023-10-15'), (2, 'ProductB', 2000.00, '2023-10-15'), (3, 'ProductA', 1200.00, '2023-10-16'), (4, 'ProductC', 1800.00, '2023-10-16'), (5, 'ProductB', 2200.00, '2023-10-17');
Veri gölünüzün Buzdağı tablolarıyla doldurulduğunu görmek için MinIO'ya geri dönün.
http://localhost:9047
adresinden Dremio'ya dönün. AT BRANCH
sözdizimini kullanarak ana daldaki bir tabloyu sorgulayarak başlayın:
SELECT * FROM nessie.SalesData AT BRANCH main;
Üretimi etkilemeden verilerle oynamanıza ve verileri dönüştürmenize olanak tanıyan bir ETL (Çıkartma Dönüştürme ve Yükleme) dalı oluşturun.
CREATE BRANCH etl_06092023 in nessie
ETL şubesi içinde tabloya yeni veriler ekleyin:
USE BRANCH etl_06092023 in nessie; INSERT INTO nessie.SalesData (id, product_name, sales_amount, transaction_date) VALUES (6, 'ProductC', 1400.00, '2023-10-18');
Yeni verilerin ETL şubesinde anında kullanılabilirliğini doğrulayın:
SELECT * FROM nessie.SalesData AT BRANCH etl_06092023;
Değişikliklerin ana daldaki kullanıcılardan izolasyonuna dikkat edin:
SELECT * FROM nessie.SalesData AT BRANCH main;
ETL şubesindeki değişiklikleri tekrar ana şubeye birleştirin:
MERGE BRANCH etl_06092023 INTO main in nessie;
Değişikliklerin gerçekten birleştirildiğini görmek için ana dalı tekrar seçin.
SELECT * FROM nessie.SalesData AT BRANCH main
Bu dallanma stratejisi, veri mühendislerinin birden fazla tablodaki çok sayıda işlemi bağımsız olarak yönetmesine olanak tanır. Hazır olduklarında, veri mühendisleri bu işlemleri ana şube içerisinde tek ve kapsamlı çok tablolu bir işlemde birleştirebilir.
Bu blog gönderisi, veri mühendisliğinde Git benzeri sürüm kontrolünün gücünü derinlemesine inceleyerek nasıl olduğunu vurguladı.
Veri göl evinizin neye benzediğini bize bildirin
Ayrıca burada görünür.