আমাদের মধ্যে অনেকেই প্রয়োজনীয়তার উপর ভিত্তি করে ডেটাতে পরিবর্তন করেছি যা পরবর্তীতে বিকশিত হয়। যখন আমরা এটি বুঝতে পারি, তখন এটি ফিরে আসা অসম্ভব হয়ে পড়ে। পরিবর্তন শুধু একটি ধ্রুবক নয়; এটি ডেটা পরিচালনার একটি অপরিহার্য অংশ যা একটি পরিশীলিত পদ্ধতির দাবি করে। Dremio-এর ডেটা ক্যাটালগ Nessie-এর Git-এর মতো কার্যকারিতা লিখুন।
যেমন গিট সফ্টওয়্যার বিকাশের জন্য মৌলিক হয়ে উঠেছে, ডেটা ইঞ্জিনিয়ারদের সমান্তরালভাবে কাজ করার জন্য, ডেটা সংস্করণগুলির তুলনা করতে, উত্পাদনে পরিবর্তনগুলি প্রচার করতে এবং প্রয়োজনের সময় ডেটা রোল ব্যাক করার জন্য অনুরূপ সরঞ্জামগুলির প্রয়োজন। Nessie ডেটা সংস্করণ, শাখা, একত্রীকরণ এবং প্রতিশ্রুতি পরিচালনার জন্য একটি গিট-এর মতো সংস্করণ নিয়ন্ত্রণ ব্যবস্থার সাথে ডেটা ইঞ্জিনিয়ারদের সরবরাহ করে। এটি খুব সহায়ক হতে পারে যখন একাধিক ডেটা ইঞ্জিনিয়ার একই সময়ে ডেটার সাথে কাজ করে এবং রূপান্তর করে। নেসি মূল শাখার আকারে সত্যের একক উৎস বজায় রেখে প্রতিটি প্রকৌশলীকে পৃথক শাখায় কাজ করার অনুমতি দেয়। এই কার্যকারিতা ডেটা ইঞ্জিনিয়ারিং দলগুলিকে নিরলস পরিবর্তনের মুখে সহযোগিতামূলকভাবে ডেটার গুণমান বজায় রাখার ক্ষমতা দেয়।
এই নিবন্ধটি একটি ধাপে ধাপে নির্দেশিকা প্রদান করে যা প্রদর্শন করে কিভাবে Nessie, Dremio এবং MinIO একসাথে কাজ করে আপনার ডেটা ইঞ্জিনিয়ারিং ওয়ার্কফ্লোতে ডেটার গুণমান এবং সহযোগিতা বাড়াতে। আপনি একজন ডেটা প্রকৌশলী, ML ইঞ্জিনিয়ার, বা শুধুমাত্র একজন আধুনিক ডেটা লেক উত্সাহী হোন না কেন, এই ব্লগটি আপনাকে আপনার ডেটা সংস্করণের অনুশীলনগুলিকে কার্যকরভাবে উন্নত করার জন্য প্রয়োজনীয় জ্ঞান এবং সরঞ্জামগুলির সাথে সজ্জিত করে৷
Nessie Git-এর মতো কাজের চাপের জন্য অনুমতি দেয় যা আপনাকে পরীক্ষা, বিকাশ এবং উত্পাদনে ঠেলে দেয়। আসুন কিছু মূল ধারণাগুলি ভেঙে দেওয়া যাক:
শাখা: গিট-এর মতোই, নেসির শাখাগুলি আপনাকে একই সাথে বিভিন্ন ডেটা ইঞ্জিনিয়ারিং কাজগুলিতে কাজ করার অনুমতি দেয়। উদাহরণস্বরূপ, বৈশিষ্ট্য বিকাশ, ডেটা পরিষ্কার এবং ডেটা রূপান্তরের জন্য আপনার একটি শাখা থাকতে পারে। প্রতিটি শাখার নিজস্ব ডেটা পরিবর্তনের সেট থাকতে পারে।
প্রতিশ্রুতি: নেসিতে, একটি কমিট নির্দিষ্ট সময়ে ডেটার একটি স্ন্যাপশট উপস্থাপন করে। আপনি যখন আপনার ডেটাতে পরিবর্তন করেন, আপনি একটি নতুন প্রতিশ্রুতি তৈরি করেন, যা সেই পরিবর্তনগুলি রেকর্ড করে। কমিট একটি নির্দিষ্ট শাখার সাথে যুক্ত। যখন আপনি আপনার ডেটাকে একটি স্থিতিশীল বা পরিচিত-ভাল অবস্থায় ফিরিয়ে আনতে হবে, তখন Nessie একটি নির্দিষ্ট প্রতিশ্রুতি নির্বাচন করা এবং সেই ডেটা সংস্করণে ফিরে আসা সহজ করে তোলে। এটি ডেটা গুণমান এবং ধারাবাহিকতা নিশ্চিত করে।
একত্রীকরণ : নেসি আপনাকে একটি শাখা থেকে অন্য শাখায় পরিবর্তনগুলিকে একত্রিত করার অনুমতি দেয়। এটি গিটে কোড পরিবর্তনগুলি মার্জ করার অনুরূপ। আপনি যখন একটি শাখাকে একত্রিত করেন, সেই শাখায় করা ডেটা পরিবর্তনগুলি লক্ষ্য শাখার অংশ হয়ে যায়।
Dremio একটি বিতরণ করা বিশ্লেষণ ইঞ্জিন যা একটি ওপেন-সোর্স প্ল্যাটফর্ম হিসাবে কাজ করে, ডেটা অনুসন্ধান, রূপান্তর এবং সহযোগী কাজের জন্য একটি স্বজ্ঞাত স্ব-পরিষেবা ইন্টারফেস অফার করে। এর ডিজাইন গ্রাউন্ডেড ইন
আমরা ইতিমধ্যে কুবারনেটসের সাথে কীভাবে ড্রেমিও স্থাপন করতে হয় এবং কীভাবে তা অন্বেষণ করেছি
MinIO হল হাই-পারফরম্যান্স অবজেক্ট স্টোরেজ। তার ব্যতিক্রমী জন্য বিখ্যাত
আপনি প্রয়োজন হবে
টিউটোরিয়ালের এই অংশটি Dremio এর উপর ভিত্তি করে
শুরু করতে, একটি টার্মিনাল খুলুন এবং যে ফোল্ডারে আপনি রেপো ক্লোন/ডাউনলোড করেছেন সেখানে নেভিগেট করুন এবং Dremio শুরু করতে নিচের কমান্ডটি চালান।
docker-compose up dremio
কয়েক মুহূর্ত অপেক্ষা করুন এবং তারপরে Dremio অ্যাক্সেস করতে http://localhost:9047
এ নেভিগেট করুন। অনুরোধ করা ক্ষেত্র আপডেট করুন এবং তারপর পরবর্তী ক্লিক করুন।
এর পরে, MinIO শুরু করতে নিম্নলিখিত কমান্ডটি চালান।
docker-compose up minio
নীচের চূড়ান্ত docker-compose up
কমান্ডটি নেসি শুরু করবে।
docker-compose up nessie
minioadmin:minioadmin
এর ব্যবহারকারীর নাম এবং পাসওয়ার্ড দিয়ে MinIO-তে লগ ইন করতে http://localhost:9001
এ নেভিগেট করুন। আপনাকে একটি বালতি তৈরি করতে বলা হবে।
একটা iceberg-datalake
নাম দিন।
তারপর http://localhost:9047
এ Dremio-এ ফিরে যান এবং Add Source-এ ক্লিক করুন এবং Nessie নির্বাচন করুন।
nessie
নাম সেট করুনhttp://nessie:19120/api/v2
এ সেট করুনnone
প্রমাণীকরণ সেট করবেন না
এখনও সংরক্ষণ ক্লিক করবেন না. পরিবর্তে, বাম দিকের নেভিগেশন প্যানেলে, স্টোরেজ ক্লিক করুন। MinIO হল S3-API সামঞ্জস্যপূর্ণ অবজেক্ট স্টোরেজ এবং AWS S3 এর মতো একই সংযোগ পথ ব্যবহার করতে পারে।
minioadmin
সেট করুনminioadmin
সেট করুন/iceberg-datalake
সেট করুন
নির্দেশাবলীর পরবর্তী সেটের জন্য নিচে স্ক্রোল করুন।
Connection Properties
অধীনে Add Property
বোতামে ক্লিক করুন।fs.s3a.path.style.access
to true
fs.s3a.endpoint
থেকে minio:9000
dremio.s3.compat
থেকে true
Encrypt connection
আনচেক করুন
তারপর Save এ ক্লিক করুন। আপনার এখন আপনার ডেটা উত্সগুলিতে নেসি ক্যাটালগগুলি দেখতে হবে৷
Dremio-তে বাম দিকে এসকিউএল রানারে নেভিগেট করুন। নিশ্চিত করুন যে টেক্সট এডিটরের উপরের ডানদিকে Context
আমাদের Nessie উৎসে সেট করা আছে। অন্যথায়, এই ক্যোয়ারী চালানোর জন্য আপনাকে শুধুমাত্র SalesData
এর পরিবর্তে nessie.SalesData
এর মতো প্রসঙ্গ উল্লেখ করতে হবে। নিচের এসকিউএল কপি করে পেস্ট করুন এবং রান করুন।
CREATE TABLE SalesData ( id INT, product_name VARCHAR, sales_amount DECIMAL, transaction_date DATE ) PARTITION BY (transaction_date);
আপনার তৈরি করা টেবিলে ডেটা সন্নিবেশ করতে নীচের ক্যোয়ারীটি চালান।
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');
আপনার ডেটা লেকটি আইসবার্গ টেবিলের সাথে জনবহুল হয়েছে তা দেখতে MinIO-তে ফিরে যান।
http://localhost:9047
এ Dremio-এ ফিরে যান। AT BRANCH
সিনট্যাক্স ব্যবহার করে প্রধান শাখায় একটি টেবিলের অনুসন্ধান করে শুরু করুন:
SELECT * FROM nessie.SalesData AT BRANCH main;
একটি ETL (এক্সট্র্যাক্ট ট্রান্সফর্ম এবং লোড) শাখা তৈরি করুন যাতে আপনি উত্পাদনকে প্রভাবিত না করে ডেটার সাথে খেলতে এবং রূপান্তর করতে পারেন।
CREATE BRANCH etl_06092023 in nessie
ETL শাখার মধ্যে, টেবিলে নতুন ডেটা সন্নিবেশ করান:
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');
ETL শাখার মধ্যে নতুন ডেটার অবিলম্বে উপলব্ধতা নিশ্চিত করুন:
SELECT * FROM nessie.SalesData AT BRANCH etl_06092023;
প্রধান শাখায় ব্যবহারকারীদের থেকে পরিবর্তনের বিচ্ছিন্নতা নোট করুন:
SELECT * FROM nessie.SalesData AT BRANCH main;
ETL শাখা থেকে মূল শাখায় পরিবর্তনগুলি মার্জ করুন:
MERGE BRANCH etl_06092023 INTO main in nessie;
পরিবর্তনগুলি সত্যিই একত্রিত হয়েছে তা দেখতে আবার প্রধান শাখা নির্বাচন করুন৷
SELECT * FROM nessie.SalesData AT BRANCH main
এই ব্রাঞ্চিং কৌশলটি ডেটা ইঞ্জিনিয়ারদের স্বাধীনভাবে একাধিক টেবিল জুড়ে অসংখ্য লেনদেন পরিচালনা করতে সক্ষম করে। যখন তারা প্রস্তুত হয়, ডেটা ইঞ্জিনিয়াররা এই লেনদেনগুলিকে প্রধান শাখার মধ্যে একটি একক, ব্যাপক মাল্টি-টেবিল লেনদেনে একত্রিত করতে পারেন।
এই ব্লগ পোস্টটি ডেটা ইঞ্জিনিয়ারিং-এ গিট-এর মতো সংস্করণ নিয়ন্ত্রণের শক্তির উপর আলোকপাত করেছে, কীভাবে জোর দেওয়া হয়েছে
আপনার ডেটা লেকহাউস দেখতে কেমন তা আমাদের জানান
এছাড়াও এখানে উপস্থিত হয়.