মূল বিষয়বস্তুতে যান

এসকিউএল ভিউয়ার

Ilum’s SQL Viewer lets you run your SQL queries directly in the UI, কোনও স্কালা বা পাইথন কোড লেখার প্রয়োজন ছাড়াই . সরলতার জন্য ডিজাইন করা, এটি এসকিউএল ক্যোয়ারী চালানোর জন্য একটি স্বজ্ঞাত ইন্টারফেস সরবরাহ করে, ডেটা অন্বেষণ, এবং দ্রুত এবং দক্ষতার সাথে অন্তর্দৃষ্টি অর্জন।

Whether you’re prototyping, analyzing data, or debugging, the SQL Viewer allows you to focus solely on the query logic without managing the underlying code.

এটি ইউআই বা হেলম স্থাপনার মানগুলির মাধ্যমে অত্যন্ত কনফিগারযোগ্য, নমনীয়তার অনুমতি দেয় উদাহরণস্বরূপ, একটি ভিন্ন টেবিল বিন্যাস নির্বাচন করা, যেমন ডেল্টা লেক, অ্যাপাচি হুডি, বা অ্যাপাচি আইসবার্গ।

এটা আপনাকে কিভাবে সাহায্য করবে?

The SQL Viewer is a powerful tool for reporting and debugging during Spark application development. Instead of building an entire Spark SQL program to query your tables, you can submit SQL statements directly within Ilum’s interface.

For debugging, SQL Viewer is invaluable—eliminating the need to repeatedly write, compile and submit code like:

valডেটাসেট = স্ফুলিঙ্গ . এসকিউএল ( "select ...") 

পরিবর্তে, আপনি প্রতিবার সেশনগুলি পুনরায় তৈরি না করে এসকিউএল বিবৃতিগুলি ইন্টারেক্টিভভাবে পরীক্ষা করতে পারেন।

ক্যোয়ারী ফলাফলের বাইরে, এসকিউএল ভিউয়ার ডেটা এক্সপ্লোরেশন এবং ভিজ্যুয়ালাইজেশন সরঞ্জামগুলি সরবরাহ করে লগ এবং এক্সিকিউশন পরিসংখ্যান সহ, আপনাকে ক্যোয়ারী প্রক্রিয়াতে গভীর অন্তর্দৃষ্টি দেয়।

ইন্টিগ্রেশন সঙ্গে অ্যাপাচি হাইভ মেটাস্টোর , SQL Viewer provides an accessible, shared environment for running SQL queries—perfectly suited for collaboration across Ilum components.

মোতায়েন

এসকিউএল ভিউয়ার ব্যবহার করতে, আপনাকে এসকিউএল ভিউয়ার এবং হাইভ উভয়ের সাথে ইলুম স্থাপন করতে হবে মেটাস্টোর সক্ষম। সেটআপ নির্দেশাবলীর জন্য, দেখুন উৎপাদন পৃষ্ঠা .

একবার কনফিগার হয়ে গেলে, এসকিউএল ভিউয়ার সাইডবার থেকে অ্যাক্সেসযোগ্য হওয়া উচিত এবং এর সাথে সংযুক্ত হওয়া উচিত মৌচাক মেটাস্টোর।

এসকিউএল ভিউয়ার দিয়ে শুরু করুন

  1. একটি নমুনা সারণী তৈরি করুন

    তৈরি 
    বা প্রতিস্থাপন সারণী my_health_data (
    টাইমস্ট্যাম্প টাইমস্ট্যাম্প ,
    হৃদস্পন্দন আইএনটি ,
    হাতের গতিবিধি আইএনটি ,
    ঘুমপর্ব ভার্চার ( 20 )
    ) ;
  2. মান ঢোকান

    সন্নিবেশ  এর মধ্যে my_health_data ( টাইমস্ট্যাম্প , হৃদস্পন্দন , হাতের গতিবিধি , ঘুমপর্ব ) 
    মানসমূহ ( অভিনয়শিল্পী ( '2024-10-01 00:00:00' হিসেবে টাইমস্ট্যাম্প ) , 70 , 1 , 'জেগে ওঠো' ) ,
    ( অভিনয়শিল্পী ( '2024-10-01 01:00:00' হিসেবে টাইমস্ট্যাম্প ) , 68 , 0 , 'আলো' ) ,
    ( অভিনয়শিল্পী ( '2024-10-01 02:00:00' হিসেবে টাইমস্ট্যাম্প ) , 65 , 0 , 'গভীর' ) ,
    ( অভিনয়শিল্পী ( '2024-10-01 03:00:00' হিসেবে টাইমস্ট্যাম্প ) , 64 , 1 , 'গভীর' ) ,
    ( অভিনয়শিল্পী ( '2024-10-01 04:00:00' হিসেবে টাইমস্ট্যাম্প ) , 66 , 0 , 'আলো' ) ,
    ( অভিনয়শিল্পী ( '2024-10-01 05:00:00' হিসেবে টাইমস্ট্যাম্প ) , 72 , 1 , 'জেগে ওঠো' ) ,
    . . .
  3. একটি সিলেক্ট ক্যোয়ারী চালান

    নির্বাচন ঘুমপর্ব ,  গড় ( হৃদস্পন্দন ) 
    থেকে my_health_data
    গোষ্ঠী দ্বারা ঘুমপর্ব
  4. "সংস্থান" ট্যাবে সারণী এবং মতামত পর্যবেক্ষণ করুন

    SQL resources tab

  5. একটি ক্যোয়ারীর ফলাফল দেখুন SQL data list

  6. ডেটা এক্সপ্লোরেশন টুল ব্যবহার করুন SQL data exploration tool

  7. লগ এবং পরিসংখ্যান পরীক্ষা করুন

    পরিসংখ্যান ক্যোয়ারী সম্পাদনে ব্যয় করা সময় সম্পর্কে তথ্য সরবরাহ করে এবং ক্যোয়ারী অপ্টিমাইজেশানের জন্য দরকারী হতে পারে। SQL query execution statistics

    লগগুলি ক্যোয়ারী ডিবাগিং এবং সাধারণ সমস্যা সনাক্তকরণের জন্য দরকারী হতে পারে। SQL query execution logs

উদাহরণ ক্যোয়ারী এবং নোটবুক লোড হচ্ছে

নতুন ব্যবহারকারীদের দ্রুত শুরু করতে সহায়তা করার জন্য ইলাম একটি উদাহরণ ক্যোয়ারী এবং নোটবুক সরবরাহ করে। উদাহরণ ক্যোয়ারী এবং নোটবুক লোড হচ্ছে সক্ষম করা হয়েছে ডিফল্টরূপে। তবে আপনি এটি ব্যবহার করে অক্ষম করতে পারেন --set ilum-core.examples.sqlQuery=false (লোডিং ক্যোয়ারী অক্ষম করে) এবং --set ilum-core.examples.sqlNotebook=false (নোটবুক লোড করা অক্ষম করে)।

বিকল্প ইঞ্জিন

ট্রিনো

ট্রিনো একটি উচ্চ-পারফরম্যান্স, বিতরণ করা এসকিউএল ক্যোয়ারী ইঞ্জিন যা বড় ডেটা বিশ্লেষণের জন্য ডিজাইন করা হয়েছে। এটি স্পার্ক এসকিউএলের একটি বাধ্যতামূলক বিকল্প সরবরাহ করে, বিশেষত হালকা, অ্যাড-হক ওয়ার্কলোড যেখানে ক্যোয়ারী এক্সিকিউশন স্পিড এবং লো ল্যাটেন্সি অগ্রাধিকার। সম্পূর্ণ কনফিগারেশন বিশদের জন্য, দেখুন ট্রিনো ডকুমেন্টেশন .

ট্রেড-অফটি হ'ল স্পার্ক এসকিউএল ইঞ্জিনগুলি অন-ডিমান্ড চালু করা হয়, যেখানে ট্রিনোকে অবশ্যই ক্লাস্টার সংস্থানগুলি গ্রাস করে পটভূমিতে অবিচ্ছিন্নভাবে চলতে হবে।

সতর্কীকরণ

অন্তর্নির্মিত ট্রিনো ডিফল্টরূপে সক্ষম হয় না। এটি সেট আপ করতে, আপনাকে করতে হবে এটি কনফিগার করুন আপনার মাথায় মূল্যবোধ।

অন্তর্নির্মিত ট্রিনোকে হাইভ মেটাস্টোরের সাথে সংযুক্ত করা হচ্ছে

While Trino can operate independently, connecting it to Ilum’s Hive Metastore provides seamless access to the same data available in Spark. This integration requires creating a dedicated catalog in Trino that references the Hive Metastore, uses S3 storage, and supports a wide variety of formats, just as Spark does.

ডিফল্টরূপে, ইলুমে ট্রিনো একটি নিয়ে আসে ইলুম-ডেল্টা ক্যাটালগ, যা একটি ডিফল্ট হাইভ মেটাস্টোর সংযোগের সাথে কনফিগার করা হয়েছে, ডিফল্ট এস 3 স্টোরেজ এবং ডেল্টা লেক সমর্থন।

এটি নিম্নলিখিত কনফিগারেশনে সেট করে করা হয়েছিল মূল্যবোধ.ইয়ামল প্রধান ইলুম হেলম চার্টের ফাইল:

ilum-SQL : 
কনফিগার :
তৃণমূল :
সক্ষম : সত্য
ক্যাটালগ : ইলুম - ডেল্টা

তৃণমূল :
সক্ষম : সত্য
ক্যাটালগ :
ইলুম-ডেল্টা : | # তৈরি করা ক্যাটালগের নাম
সংযোগকারী.নাম=delta_lake # কানেক্টরের নাম (এবার ডেল্টা লেক)
delta.metastore.store - সারণী - মেটাডাটা = সত্য # হাইভ মেটাস্টোরে ট্রিনো স্টোর মেটাডেটা তৈরি করে
ডেল্টা.রেজিস্টার - সারণী - পদ্ধতি.সক্ষম=সত্য # ট্রিনোতে টেবিল রেজিস্ট্রেশন পদ্ধতি সক্ষম করে
হাইভ.মেটাস্টোর.উরি=থ্রিফ্ট : ইলুম - মৌচাক - মেটাস্টোর : 9083 # মৌচাক মেটাস্টোর ইউআরআই
এফ.এস.নেটিভ - s3.enabled=সত্য # এস 3 সমর্থন সক্ষম করা
s3.endpoint=http : ইলুম - মিনিও : 9000 # এস 3 এন্ডপয়েন্ট
s3.region=US - পূর্ব - 1 # এস 3 অঞ্চল
এস৩.পাথ - শৈলী - প্রবেশাধিকার = সত্য # এস 3 পাথ স্টাইল অ্যাক্সেস
এস 3.এডাব্লুএস - এক্সেস - key=minioadmin # এস 3 অ্যাক্সেস কী
এস 3.এডাব্লুএস - রহস্য - key=minioadmin # এস৩ গোপন চাবি
সতর্কীকরণ

এই মানগুলি কেবল ডিফল্ট কনফিগারেশনকে প্রতিফলিত করে। আপনার যদি আলাদা সেটআপ থাকে তবে আপনাকে সেই অনুযায়ী মানগুলি সামঞ্জস্য করতে হবে।

বাহ্যিক ট্রিনো উদাহরণ

নিম্নলিখিত হেলম মানগুলি সরবরাহ করে আপনার নিজের ট্রিনো উদাহরণটি সংযুক্ত করাও সম্ভব:

ilum-sql.config.trino.enabled= সত্য 
# একটি ইউআরএল একটি ট্রিনো সমন্বয়কারীকে নির্দেশ করে
ilum-sql.config.trino.url = http://ilum-trino:8080
# আপনি যে বেস ক্যাটালগটি ব্যবহার করতে চান তার একটি নাম
ilum-sql.config.trino.catalog = সিস্টেম

টিপস এবং ভাল অনুশীলন

জেডিবিসি সহ বাহ্যিক এসকিউএল ক্লায়েন্ট ব্যবহার করে

এসকিউএল ভিউয়ার ব্রাউজারে নিখুঁতভাবে কাজ করার সময়, আপনি আপনার ইলাম এসকিউএলকে বাহ্যিক পরিবেশে সংযুক্ত করতে পারেন যা হাইভ / স্পার্ক জেডিবিসি ড্রাইভারগুলিকে সমর্থন করে। এইভাবে, আপনি আপনার প্রিয় এসকিউএল ক্লায়েন্ট বা বিআই সরঞ্জাম থেকে আপনার ইলম ডেটাতে প্রশ্ন চালাতে পারেন।

এটি করতে, নিম্নলিখিত সংযোগ স্ট্রিং সহ একটি জেডিবিসি সংযোগ সেট আপ করুন:

jdbc:hive2://<ilum-sql-host>:<thrift-binary-port>/<database-name>;? spark.ilum.sql.cluster.id=<cluster-id> 

যেখানে:

  • <ilum-sql-host> আপনার ইলাম এসকিউএল পরিষেবা উপাদানটির হোস্টনাম (উদাঃ, ilum-sql-headless বা ilum-sql-thrift-binary )
  • <thrift-binary-port> হ'ল পোর্ট যেখানে থ্রিফ্ট পরিষেবা উন্মুক্ত হয় (ডিফল্ট হল 10009 )
  • <database-name> তুমি যে ডাটাবেসের সাথে সংযোগ করতে চাও তার নাম (পুট ডিফল্ট সেখানে)
  • <cluster-id> আপনি যে স্পার্ক ক্লাস্টারের সাথে সংযোগ করতে চান তার আইডি (আপনি এটি ইলাম ইউআইতে খুঁজে পেতে পারেন)

Using the SQL Viewer on datasets from other Ilum’s components

এসকিউএল ভিউয়ার এতে টেবিল তৈরি করে মৌচাক মেটাস্টোর ডিফল্টরূপে, যার অর্থ কোনও স্পার্ক সংস্থান, যা একই মেটাস্টোর ব্যবহার করে, এই টেবিলগুলি দেখতে সক্ষম হবে।

একটি কাজ যা একটি মেটাস্টোর ব্যবহার করে সাধারণত নিম্নলিখিত কনফিগারেশন থাকে:

spark.sql.catalogImplementation = মৌচাক 
spark.hadoop.hive.metastore.uris = thrift://<hive-metastore-host>:<hive-metastore-port>
# মেটাস্টোরের জন্য স্টোরেজ অবস্থান (উদাঃ, এস 3)
spark.hadoop.fs.s3a.access.key = <access-key>
spark.hadoop.fs.s3a.secret.key = <secret-key>
spark.hadoop.fs.s3a.endpoint = <s3-endpoint>
spark.hadoop.fs.s3a.path.style.access = সত্য
spark.hadoop.fs.s3a.fast.upload = সত্য

আমরা দেখতে পাচ্ছি যে মেটাস্টোরের ইউরি সরবরাহ করা হয়েছে এবং একটি ভাগ করা স্টোরেজ অবস্থান ব্যবহার করা হয়েছে।

SQL viewer&#39;s resources tab মেটাস্টোর ব্যবহার করে এমন একটি উপাদানের উদাহরণ হ'ল ইলাম টেবিল এক্সপ্লোরার .

স্পার্কের অপ্টিমাইজেশান উপাদানগুলি ব্যবহার করুন

স্পার্ক এসকিউএল বেশ কয়েকটি অপ্টিমাইজেশান বৈশিষ্ট্য সরবরাহ করে যা পার্টিশনিংয়ের মাধ্যমে আপনার ক্যোয়ারী পারফরম্যান্সকে উল্লেখযোগ্যভাবে উন্নত করতে পারে, ক্লাস্টারিং, এবং উপযুক্ত স্টোরেজ ফর্ম্যাট। এই অপ্টিমাইজেশান কৌশলগুলি স্পার্ক প্রক্রিয়া প্রশ্নগুলিকে আরও দক্ষতার সাথে সহায়তা করে, বিশেষত যখন বড় ডেটাসেটগুলি নিয়ে কাজ করে, স্ক্যান করা প্রয়োজন এমন ডেটা পরিমাণ হ্রাস করে এবং ডিস্কে ডেটা সংগঠন উন্নত করে।

নিম্নলিখিত উদাহরণটি একটি টেবিল সংজ্ঞা দেখায় যা বেশ কয়েকটি অপ্টিমাইজেশান কৌশল অন্তর্ভুক্ত করে:

  1. দ্বারা টেবিল পার্টিশন করা হচ্ছে তারিখ এবং দেশ কলাম, যা স্পার্ককে অপ্রাসঙ্গিক পার্টিশনগুলি এড়িয়ে যেতে দেয়
  2. দ্বারা ক্লাস্টারিং ডেটা ইউসেরিড সম্পর্কিত সারিগুলির জন্য ডেটা লোকাল উন্নত করতে
  3. দ্বারা ডেটা বাছাই করা হচ্ছে ভিউটাইম আরও দক্ষ পরিসীমা প্রশ্নের জন্য
  4. আরও ভাল বিতরণের জন্য বালতিতে ডেটা সংগঠিত করা
  5. ব্যবহার করে পারকুয়েট ফর্ম্যাট যা কলামার স্টোরেজ ও দক্ষ ক্যোয়ারিংয়ের জন্য অপ্টিমাইজ করা হয়েছে
তৈরি  সারণী page_view 
(
ভিউটাইম আইএনটি ,
ইউসেরিড বিগিন্ট ,
page_url স্ট্রিং ,
referrer_url স্ট্রিং ,
ফ্রেন্ডস অ্যারে < বিগিন্ট > ,
বৈশিষ্ট্য মানচিত্র < স্ট্রিং , স্ট্রিং > ,
ডিটি স্ট্রিং ,
দেশ ঘুরে বেড়াচ্ছে
) মন্তব্য 'দিস ইজ দ্য পেজ ভিউ টেবিল'
পার্টিশন করা হয়েছে দ্বারা ( ডিটি , দেশ )
গুচ্ছবদ্ধ দ্বারা ( ইউসেরিড ) সাজানো দ্বারা ( ভিউটাইম ) এর মধ্যে 32 বালতি
সঞ্চিত হিসেবে পারকুয়েট

বিকল্প টেবিল ফর্ম্যাট দ্বারা প্রদত্ত বৈশিষ্ট্যগুলি ব্যবহার করে একটি অনুরূপ প্রভাব অর্জন করা যেতে পারে, যা আলোচনা করা হয়েছে নিচে

আপনার প্রশ্নের কর্মক্ষমতা বাড়াতে স্পার্ক এসকিউএল এক্সটেনশন ব্যবহার করুন

স্পার্ক এসকিউএল আপনাকে অন্তর্নির্মিত এসকিউএল কার্যকারিতা উন্নত করতে বিভিন্ন এসকিউএল এক্সটেনশন ব্যবহার করতে দেয়। এটি এর মাধ্যমে করা হয় spark.sql.এক্সটেনশন বিশিষ্টতা। উদাহরণস্বরূপ, আপনি যোগ করতে পারেন ডেল্টা লেক এক্সটেনশন, যা ডেল্টা টেবিলগুলির সাথে কাজ করার জন্য অতিরিক্ত বৈশিষ্ট্য সরবরাহ করে।

তবে এই সম্পত্তিটি অন্যান্য এক্সটেনশানগুলি সক্ষম করতেও ব্যবহার করা যেতে পারে, যেমন স্পার্ক এক্সিকিউশন ইঞ্জিনগুলির জন্য একটি এসকিউএল অপ্টিমাইজেশান এক্সটেনশন। এটি সক্ষম করতে, হয়:

  • নতুন Ilum Spark চিত্রগুলির মধ্যে একটি ব্যবহার করুন
  • মাভেন সংগ্রহস্থল থেকে এক্সটেনশনের জার ফাইল যুক্ত করুন: org.apache.kyuubi:kyuubi-extension-spark-<SPARK_VERSION>_<SCALA_VERSION>:<KYUUBI_VERSION>
  • আপনার স্পার্কের ধারক চিত্রটি সংশোধন করুন এবং ক্লাসপাথে জার ফাইলটি যুক্ত করুন

এটি আপনাকে আপনার এসকিউএল ইঞ্জিনে এক্সটেনশনটি নিম্নরূপ যুক্ত করার অনুমতি দেবে: spark.sql.extensions=org.apache.kyuubi.sql.KyuubiSparkSQLExtension . এই সম্পত্তিটি এক্সটেনশনগুলির একটি কমা-বিভক্ত তালিকা, যাতে আপনি একাধিক যুক্ত করতে পারেন।

ক্যোয়ারী সংরক্ষণ করুন, এসকিউএল ক্যোয়ারী আমদানি এবং রপ্তানি করুন

এসকিউএল ভিউয়ার আপনাকে পরে ব্যবহারের জন্য আপনার প্রশ্নগুলি সংরক্ষণ করার পাশাপাশি সেগুলি আমদানি এবং রফতানি করতে দেয়।

SQL viewer&#39;s saving / import / export functionality

আরও উন্নত ডেটা ফর্ম্যাটগুলি ব্যবহার করুন: অ্যাপাচি আইসবার্গ, অ্যাপাচি হুডি এবং ডেল্টা টেবিল

ডেল্টা টেবিল

ডেল্টা লেক একটি ওপেন সোর্স স্টোরেজ স্তর যা অ্যাপাচি স্পার্কে এসিডি লেনদেন নিয়ে আসে এবং বিগ ডেটা ওয়ার্কলোড। এটি ব্যবহার করে ডেল্টা টেবিল এর মূল বিন্যাস হিসাবে, সংমিশ্রণ পারকুয়েট ফাইল সাথে লেনদেনের লগ . এই লগগুলি টেবিল সংস্করণগুলির উপর নজর রাখে, ডিএমএল অপারেশনগুলি ক্যাপচার করে এবং তালা দিয়ে কনকারেন্সি হ্যান্ডেল করুন।

সহজ শর্তে, একটি পার্টিশনের প্রতিটি অপারেশন একটি নতুন সংস্করণ তৈরি করে, পূর্ববর্তীটি সংরক্ষণ করে প্রয়োজনে সহজ রোলব্যাক। একটি লেনদেন লগ ফাইল এই সংস্করণগুলিকে লকিং এবং সংস্করণ পরিচালনা করতে সহায়তা করে নিয়ন্ত্রণ, তথ্য সামঞ্জস্য নিশ্চিত।

ডেল্টা লেক ব্যবহার করা সহজবোধ্য এবং অতিরিক্ত বৈশিষ্ট্য যুক্ত করার জন্য সংহত করার জন্য একটি দুর্দান্ত পছন্দ আপনার ইলম পরিবেশে।

For more details on Delta Lake’s concurrency management with ওসিসি (আশাবাদী কনকারেন্সি নিয়ন্ত্রণ), এবং এটি কীভাবে স্ট্রিমিং এবং ব্যাচ লেখে সংহত করে, আমরা দেখার পরামর্শ দিই ডেল্টা লেক ডকুমেন্টেশন .

বৈশিষ্ট্য:
  • এসিডি বৈশিষ্ট্য রক্ষণাবেক্ষণ
  • আপডেট, মুছুন এবং মার্জ অপারেশনগুলির জন্য সমর্থন
  • স্কিমা বিবর্তন: টেবিল পরিবর্তন
  • সংস্করণ: করার ক্ষমতা টাইম-ট্রাভেল ডেটাসেটের পূর্ববর্তী সংস্করণগুলিতে
  • ঐতিহ্যগত ফরম্যাটের তুলনায় ভাল অপ্টিমাইজেশান
  • স্ট্রিমিং এবং ব্যাচ উভয়ের জন্য এই বৈশিষ্ট্যগুলির ইন্টিগ্রেশন
ডেল্টা টেবিলগুলি কীভাবে ব্যবহার করবেন?

By default, Delta Tables are enabled inside Ilum’s SQL Viewer. The following configurations are set for you:

spark.sql.এক্সটেনশন = io.delta.sql.DeltaSparkSessionExtension 
spark.sql.ক্যাটালগ.স্পার্ক_ক্যাটালগ = org.apache.spark.sql.delta.catalog.DeltaCatalog
spark.databricks.delta.catalog.update.enabled = সত্য

অতএব, আপনি কোনও অতিরিক্ত পদক্ষেপ ছাড়াই আপনার এসকিউএল ভিউয়ারের ভিতরে ডেল্টা টেবিলগুলি ব্যবহার করতে পারেন।

  1. একটি ডেল্টা সারণী তৈরি করুন

    তৈরি  সারণী my_health_data_delta 
    (
    টাইমস্ট্যাম্প টাইমস্ট্যাম্প ,
    হৃদস্পন্দন আইএনটি ,
    হাতের গতিবিধি আইএনটি ,
    ঘুমপর্ব ভার্চার ( 20 )
    ) ব্যবহার ডেল্টা ;
  2. কিছু DML অপারেশন চালান

    সন্নিবেশ  এর মধ্যে my_health_data_delta ( টাইমস্ট্যাম্প , হৃদস্পন্দন , হাতের গতিবিধি , ঘুমপর্ব )  মানসমূহ 
    ( অভিনয়শিল্পী ( '2024-10-01 00:00:00' হিসেবে টাইমস্ট্যাম্প ) , 70 , 1 , 'জেগে ওঠো' ) ,
    ( অভিনয়শিল্পী ( '2024-10-01 01:00:00' হিসেবে টাইমস্ট্যাম্প ) , 68 , 0 , 'আলো' ) ,
    ( অভিনয়শিল্পী ( '2024-10-01 02:00:00' হিসেবে টাইমস্ট্যাম্প ) , 65 , 0 , 'গভীর' ) ,
    ( অভিনয়শিল্পী ( '2024-10-01 03:00:00' হিসেবে টাইমস্ট্যাম্প ) , 64 , 1 , 'গভীর' ) ,
    ( অভিনয়শিল্পী ( '2024-10-01 04:00:00' হিসেবে টাইমস্ট্যাম্প ) , 66 , 0 , 'আলো' ) ;
    বিলোপ  থেকে my_health_data_delta 
    যেখানে টাইমস্ট্যাম্প = '2024-10-01 02:00:00' ;
    আধুনিকীকরণ my_health_data_delta 
    সেট হৃদস্পন্দন = 50
    যেখানে টাইমস্ট্যাম্প = '2024-10-01 03:00:00' ;
  3. সংস্করণ ইতিহাস এবং বিস্তারিত দেখুন

    বর্ণনা ইতিহাস my_health_data_delta 

    SQL Delta Table history

  4. সময় এবং সংস্করণ ভ্রমণের কার্যকারিতা ব্যবহার করুন

    নির্বাচন  * 
    থেকে my_health_data_delta সংস্করণ হিসেবে এর 1

    অথবা একটি নির্দিষ্ট তারিখে ভ্রমণ করতে (উদাঃ, একদিন পিছনে):

    নির্বাচন  * 
    থেকে my_health_data_delta টাইমস্ট্যাম্প হিসেবে এর date_sub ( current_date ( ) , 1 )
  5. পরিষ্কার করা হচ্ছে

    ডেল্টা টেবিলগুলি পারফরম্যান্সের জন্য অপ্টিমাইজ করা হলেও, তারা জমা হতে পারে সময়ের সাথে সাথে প্রচুর সংখ্যক ফাইল। ঐ ভ্যাকুয়াম অপারেশন এই ফাইল পরিষ্কার এবং টেবিল অপ্টিমাইজ করতে সাহায্য করে. আপনি এটি সম্পর্কে পড়তে পারেন এখানে .

    ভ্যাকুয়াম my_health_data_delta 

    অথবা দেখতে হবে কোন ফাইলগুলি মুছে ফেলা হবে (1000 পর্যন্ত):

    ভ্যাকুয়াম my_health_data_delta ড্রাই রান 

অ্যাপাচি হুদি

অ্যাপাচি হুডি ডেল্টা লেকের মতো হলেও এর অনন্য সুবিধা রয়েছে। অ্যাপাচি হুডিতে, প্রতিটি পার্টিশন সংগঠিত হয় ফাইল গ্রুপ . প্রতিটি ফাইল গ্রুপ গঠিত টুকরো টুকরো , যা ডেটা ফাইল এবং সহগামী লগ ফাইল ধারণ করে। লগ ফাইলগুলি ক্রিয়া এবং প্রভাবিত ডেটা রেকর্ড করে, হুডিকে পঠন ক্রিয়াকলাপগুলি অনুকূল করতে দেয় ডেটার সর্বশেষ ভিউ তৈরি করতে বেস ফাইলে এই ক্রিয়াগুলি প্রয়োগ করা।

প্রক্রিয়াটি সহজতর করতে, কনফিগার করা কম্প্যাকশন অপারেশন অপরিহার্য। কম্প্যাকশন একটি আপডেট বেস ফাইলের সাথে একটি নতুন স্লাইস তৈরি করে, কর্মক্ষমতা উন্নত করে।

This structure, along with Hudi’s extensive optimization, enhances write efficiency, making it faster than alternative formats in certain scenarios. Furthermore, Hudi supports এনবিসিসি (নন-ব্লকিং কনকারেন্সি কন্ট্রোল) এর বদলে ওসিসি (আশাবাদী কনকারেন্সি কন্ট্রোল), যা পরিবেশে আরও কার্যকর হাই কনকারেন্ট লেখেন।

SQL Hudi Architecture

সংক্ষেপে, অ্যাপাচি হুডি ভারী সমবর্তী লেখার ক্রিয়াকলাপ সহ পরিবেশের জন্য উপযুক্ত, এবং কাস্টম অপ্টিমাইজেশানগুলির উপর আরও নিয়ন্ত্রণ সরবরাহ করে, যদিও এটি ডেল্টা লেকের চেয়ে কম ব্যবহারকারী-বান্ধব হতে পারে।

এটি সম্পর্কে আরও জানতে, আপনার পরিদর্শন করা উচিত অ্যাপাচি হুদি ডকুমেন্টেশন পৃষ্ঠা

কিভাবে Apache Hudi ব্যবহার করবেন?

ডেল্টা লেকের বিপরীতে, অ্যাপাচি হুডি পূর্বনির্ধারিত নয়; অতএব, আপনাকে ক্লাস্টার কনফিগারেশন পরিবর্তন করতে হবে এবং নিম্নলিখিত বৈশিষ্ট্যগুলি যুক্ত করতে হবে:

{ 
"স্পার্ক.জারস.প্যাকেজস" : "org.apache.Hudi:Hudi-spark3.5-bundle_2.12:0.15.0" ,
"স্পার্ক.সিরিয়ালাইজার" : "org.apache.spark.serializer.KryoSerializer" ,
"spark.sql.catalog.spark_catalog" : "org.apache.spark.sql.hudi.catalog.HoodieCatalog" ,
"spark.sql.এক্সটেনশন" : "org.apache.spark.sql.hudi.HoodieSparkSessionExtension" ,
"স্পার্ক.ক্রিও.রেজিস্ট্রেটর" : "org.apache.spark.HoodieSparkKryoRegistrar"
}

Remember to make sure that the version of the Hudi-spark’s jar is matching the version of the Spark you’re using.

অতিরিক্তভাবে, যেহেতু জার প্যাকেজটি প্রাক ইনস্টল করা নেই, ইঞ্জিন আরম্ভের সময় তুমি জেভিএম হিপ আউট অফ মেমরির সমস্যার মুখোমুখি হতে পারেন। এই সমস্যাটি এবং এটি কীভাবে ঠিক করা যায় সে সম্পর্কে আরও পড়তে, দয়া করে দেখুন সমস্যা সমাধান বিভাগ .

  1. একটি হুডি টেবিল তৈরি করুন

    তৈরি  সারণী my_sales_data_hudi ( 
    sale_id স্ট্রিং ,
    sale_date টাইমস্ট্যাম্প ,
    product_id স্ট্রিং ,
    পরিমাণ আইএনটি ,
    দাম দশমিক ( 10 , 2 )
    ) ব্যবহার হুডি
    টিবিএল প্রপার্টি (
    টাইপ = 'মোর' ,
    প্রাথমিককী = 'sale_id'
    ) ;

    লক্ষ্য করুন টাইপ = 'মোর' সম্পত্তি, যা জন্য দাঁড়ায় পঠনে মার্জ করুন . এই সম্পত্তিটি টেবিলের ধরন পরিবর্তন করে, যা পড়া এবং লেখার মধ্যে অপ্টিমাইজেশানকে ভারসাম্যপূর্ণ করে কার্যক্রম।

  2. DML অপারেশন সম্পাদন করুন

    সন্নিবেশ  এর মধ্যে my_sales_data_hudi ( sale_id , sale_date , product_id , পরিমাণ , দাম )  মানসমূহ 
    ( 'এস০০১' , অভিনয়শিল্পী ( '2024-10-01 10:00:00' হিসেবে টাইমস্ট্যাম্প ) , 'P001' , 10 , 99.99 ) ,
    ( 'এস০০২' , অভিনয়শিল্পী ( '2024-10-01 11:00:00' হিসেবে টাইমস্ট্যাম্প ) , 'পি০০২' , 5 , 49.99 ) ,
    ( 'এস০০৩' , অভিনয়শিল্পী ( '2024-10-01 12:00:00' হিসেবে টাইমস্ট্যাম্প ) , 'পি০০৩' , 20 , 19.99 ) ,
    ( 'এস০০৪' , অভিনয়শিল্পী ( '2024-10-01 13:00:00' হিসেবে টাইমস্ট্যাম্প ) , 'পি০০৪' , 15 , 29.99 ) ,
    ( 'এস০০৫' , অভিনয়শিল্পী ( '2024-10-01 14:00:00' হিসেবে টাইমস্ট্যাম্প ) , 'পি০০৫' , 8 , 39.99 ) ;
    আধুনিকীকরণ my_sales_data_hudi 
    সেট দাম = 89.99
    যেখানে sale_id = 'এস০০১' ;
    বিলোপ  থেকে my_sales_data_hudi 
    যেখানে sale_id = 'এস০০৩' ;
  3. কমিটমেন্টের তালিকা করুন

    কল show_commits ( সারণী  = >  'my_sales_data_hudi' ,  সীমা  = >  5 ) 

    SQL Hudi commits query results

    এখানে লক্ষ্য করুন commit_time কলাম, যা কমিটের সময় দেখায়। আমরা সময় ভ্রমণ সঞ্চালন করতে এই মান ব্যবহার করতে পারেন।

  4. সময় ভ্রমণ কার্যকারিতা ব্যবহার করুন

    কল rollback_to_instant ( সারণী  = >  'my_sales_data_hudi' , instant_time = >  '<commit-time-from-last-step>' ) ; 

    এই কমান্ডটি টেবিলটিকে নির্দিষ্ট প্রতিশ্রুতিবদ্ধ সময়ে যে অবস্থায় ছিল সেখানে ফিরিয়ে আনবে। মনে রাখবেন যে আপনি কেবল সর্বশেষ প্রতিশ্রুতিটি বিপরীত করতে পারেন, তাই আপনি যদি আরও পিছনে যেতে চান, আপনাকে একাধিক রোলব্যাক সম্পাদন করতে হবে।

অ্যাপাচি আইসবার্গ

অ্যাপাচি আইসবার্গ একটি উচ্চ-পারফরম্যান্স টেবিল ফর্ম্যাট যা বিশেষভাবে ডেটা লেকের জন্য ডিজাইন করা হয়েছে, অন্যান্য ফরম্যাটের তুলনায় অনন্য ক্ষমতা প্রদান। একটি স্বতন্ত্র স্থাপত্যের চারপাশে নির্মিত, আইসবার্গ ব্যবহার করে স্ন্যাপশট টেবিল স্টেটগুলি পরিচালনা করতে, ঐতিহ্যগত লেনদেন লগের উপর নির্ভরতা এড়ানো। এই স্ন্যাপশট-ভিত্তিক নকশাটি নির্দিষ্ট সময়ে একটি টেবিলের পুরো অবস্থা ক্যাপচার করে।

প্রতিটি স্ন্যাপশট একটি ধারণ করে ম্যানিফেস্ট তালিকা , যা পরিবর্তে একাধিক প্রকাশের উল্লেখ করে। এই ম্যানিফেস্টগুলি নির্দিষ্ট ডেটা ফাইলগুলিতে পয়েন্টারগুলি সংগঠিত করে এবং প্রাসঙ্গিক মেটাডেটা ধারণ করে, আইসবার্গকে স্ন্যাপশট জুড়ে ডেটা ফাইলগুলি নকল না করে দক্ষতার সাথে পরিবর্তনগুলি ট্র্যাক করতে সক্ষম করে। এই পদ্ধতিটি স্টোরেজকে অনুকূল করে, কারণ স্ন্যাপশটগুলি বিদ্যমান ডেটা ফাইলগুলি পুনরায় ব্যবহার করতে পারে, অপ্রয়োজনীয়তা হ্রাস করে।

আইসবার্গ যেমন শক্তিশালী বৈশিষ্ট্য প্রদান করে শাখা এবং ট্যাগিং , ব্যবহারকারীদের টেবিলের শাখা তৈরি করতে এবং স্ন্যাপশটগুলিতে মানব-পঠনযোগ্য ট্যাগ বরাদ্দ করার অনুমতি দেয়। এই বৈশিষ্ট্যগুলি সংস্করণ নিয়ন্ত্রণের জন্য প্রয়োজনীয়, দলগুলিকে উত্পাদনে প্রতিশ্রুতিবদ্ধ করার আগে সমবর্তী আপডেট এবং পরীক্ষার পরিবর্তনগুলি পরিচালনা করতে সক্ষম করে।

নমনীয় ডেটা সংস্থার বিকল্প এবং শক্তিশালী সংস্করণ ক্ষমতা সহ, অ্যাপাচি আইসবার্গ আধুনিক ডেটা লেকের জন্য স্কেলযোগ্য, পারফর্ম্যান্ট ডেটা ম্যানেজমেন্ট সক্ষম করে।

SQL Iceberg branching

অ্যাপাচি আইসবার্গ ডকুমেন্টেশন সম্পর্কে আরও

কিভাবে Apache Iceberg ব্যবহার করবেন?

ডেল্টা লেকের বিপরীতে, অ্যাপাচি হুডি পূর্বনির্ধারিত নয়; অতএব, আপনাকে ক্লাস্টার কনফিগারেশন পরিবর্তন করতে হবে এবং নিম্নলিখিত বৈশিষ্ট্যগুলি যুক্ত করতে হবে:

{ 
"স্পার্ক.জারস.প্যাকেজস" : "org.apache.iceberg:iceberg-spark-runtime-3.5_2.12:1.6.1" ,
"spark.sql.এক্সটেনশন" : "org.apache.iceberg.spark.extensions.IcebergSparkSessionExtensions" ,
"spark.sql.catalog.spark_catalog" : "org.apache.iceberg.spark.SparkSessionCatalog" ,
"spark.sql.catalog.spark_catalog.type" : "মৌচাক" ,
"spark.sql.catalog.spark_catalog.uri" : "thrift://ilum-hive-metastore:9083"
}

Remember to make sure that the version of the Iceberg’s jar is matching the version of the Spark you’re using and that the Hive Metastore is available at the specified URI.

অতিরিক্তভাবে, যেহেতু জার প্যাকেজটি প্রাক ইনস্টল করা নেই, ইঞ্জিন আরম্ভের সময় তুমি জেভিএম হিপ আউট অফ মেমরির সমস্যার মুখোমুখি হতে পারেন। এই সমস্যাটি এবং এটি কীভাবে ঠিক করা যায় সে সম্পর্কে আরও পড়তে, দয়া করে দেখুন সমস্যা সমাধান বিভাগ .

  1. একটি আইসবার্গ টেবিল তৈরি করুন:

    তৈরি  সারণী weather_stations 
    (
    station_id স্ট্রিং ,
    reading_time টাইমস্ট্যাম্প ,
    তাপমাত্রা দশমিক ( 4 , 1 ) ,
    আর্দ্রতা আইএনটি ,
    wind_speed দশমিক ( 4 , 1 )
    ) ব্যবহার হিমশৈল
  2. সারণীতে ডেটা সন্নিবেশ করুন

    সন্নিবেশ  এর মধ্যে weather_stations মানসমূহ 
    ( 'WS001' , অভিনয়শিল্পী ( '2024-03-01 08:00:00' হিসেবে টাইমস্ট্যাম্প ) , 15.5 , 65 , 12.3 ) ,
    ( 'WS001' , অভিনয়শিল্পী ( '2024-03-01 09:00:00' হিসেবে টাইমস্ট্যাম্প ) , 17.2 , 62 , 10.5 ) ,
    ( 'WS001' , অভিনয়শিল্পী ( '2024-03-01 10:00:00' হিসেবে টাইমস্ট্যাম্প ) , 19.8 , 58 , 11.7 ) ,
    ( 'ডব্লিউএস০০২' , অভিনয়শিল্পী ( '2024-03-01 08:00:00' হিসেবে টাইমস্ট্যাম্প ) , 14.2 , 70 , 8.9 ) ,
    ( 'ডব্লিউএস০০২' , অভিনয়শিল্পী ( '2024-03-01 09:00:00' হিসেবে টাইমস্ট্যাম্প ) , 16.0 , 68 , 9.2 ) ,
    ( 'ডব্লিউএস০০২' , অভিনয়শিল্পী ( '2024-03-01 10:00:00' হিসেবে টাইমস্ট্যাম্প ) , 18.5 , 63 , 10.1 ) ,
    ( 'WS003' , অভিনয়শিল্পী ( '2024-03-01 08:00:00' হিসেবে টাইমস্ট্যাম্প ) , 13.7 , 72 , 15.4 ) ,
    ( 'WS003' , অভিনয়শিল্পী ( '2024-03-01 09:00:00' হিসেবে টাইমস্ট্যাম্প ) , 15.9 , 69 , 14.8 ) ,
    ( 'WS003' , অভিনয়শিল্পী ( '2024-03-01 10:00:00' হিসেবে টাইমস্ট্যাম্প ) , 18.1 , 65 , 13.2 ) ;
  3. বর্তমান স্ন্যাপশট থেকে একটি ট্যাগ তৈরি করুন

    পরিবর্তন  সারণী weather_stations তৈরি ট্যাগ ` initial_state ` 
  4. ডেটাতে কিছু পরিবর্তন করুন

    আধুনিকীকরণ weather_stations 
    সেট
    তাপমাত্রা = 16.5
    যেখানে
    station_id = 'WS001'
    এবং reading_time = অভিনয়শিল্পী ( '2024-03-01 08:00:00' হিসেবে টাইমস্ট্যাম্প )
    বিলোপ  থেকে weather_stations যেখানে station_id =  'ডব্লিউএস০০২' 
  5. সমস্ত স্ন্যাপশট তালিকাভুক্ত করুন

    নির্বাচন  *  থেকে spark_catalog . ডিফল্ট . weather_stations . স্ন্যাপশট 

    SQL Iceberg snapshots query results

    টাইমস্ট্যাম্প সংরক্ষণ করুন ( commited_at ) আপনি পরে জন্য সময় ভ্রমণ করতে চান স্ন্যাপশট।

  6. ইতিহাস জেনে নিন

    নির্বাচন  *  থেকে spark_catalog . ডিফল্ট . weather_stations . ইতিহাস 
  7. একটি নির্দিষ্ট ট্যাগে রোলব্যাক

    কল spark_catalog . সিস্টেম . set_current_snapshot ( 
    সারণী = > 'spark_catalog.default.weather_station' ,
    রেফ = > 'initial_state'
    )
  8. একটি নির্দিষ্ট স্ন্যাপশটে সময় ভ্রমণ

    নির্বাচন  *  থেকে weather_stations টাইমস্ট্যাম্প  হিসেবে  এর  < টাইমস্ট্যাম্প - থেকে - পদক্ষেপ - 5 > 

এসকিউএল ভিউয়ারে ইউডিএফ কীভাবে ব্যবহার করবেন?

ইউডিএফ (ব্যবহারকারী সংজ্ঞায়িত ফাংশন) এসকিউএল-এর একটি শক্তিশালী বৈশিষ্ট্য যা আপনাকে সংজ্ঞায়িত করতে দেয় আপনার প্রশ্নগুলিতে ব্যবহার করার জন্য কাস্টম ফাংশনগুলি। এগুলি এসকিউএল ভিউয়ারেও সমর্থিত, আপনাকে আপনার প্রশ্নের কার্যকারিতা প্রসারিত করতে দেয়।

  1. আপনার ইউডিএফের জন্য একটি ক্লাস তৈরি করুন

    প্যাকেজ  example

    আমদানি org. apache. hadoop. মৌচাক . ql. exec. UDF

    শ্রেণী স্কালাইউডিএফ extends UDF {
    ডিএফ evaluate( str: String) : Int = {
    str. length( )
    }
    }

    এর প্রয়োজনীয় নির্ভরতা অন্তর্ভুক্ত করার বিষয়টি নিশ্চিত করুন মৌচাক-এক্সেক: 3.1.3 আপনার প্রকল্পে:

    < নির্ভরশীলতা > 
    < GroupId > org.apache.hive </ GroupId >
    < artifactId > মৌচাক-এক্সেক </ artifactId >
    < সংস্করণ > 3.1.3 </ সংস্করণ >
    </ নির্ভরশীলতা >
  2. একটি জার প্যাকেজ তৈরি করুন এবং এটি আপনার বিতরণ স্টোরেজে রাখুন

    SQL UDF jar file

    আপনার জার ফাইলের পথটি মনে রাখার বিষয়টি নিশ্চিত করুন।

  3. এটি এসকিউএল ভিউয়ার স্পার্ক সেশনে যুক্ত করুন

    যুক্ত জার '<the-path-to-your-jar-file>' 
  4. আপনার সংজ্ঞায়িত ইউডিএফের সাথে লিঙ্কযুক্ত একটি ফাংশন তৈরি করুন

    তৈরি 
    বা প্রতিস্থাপন কাজ স্কালাইউডিএফ হিসেবে 'উদাহরণ। স্কালাইউডিএফ'
  5. এটি একটি ক্যোয়ারিতে ব্যবহার করুন

    নির্বাচন নাম , স্কালাইউডিএফ ( নাম ) 
    থেকে নতুন টেবিলের নাম

সমস্যা সমাধান

এটা জানা দরকারী যে এসকিউএল ভিউয়ার পৃষ্ঠা থেকে এসকিউএল প্রশ্নগুলি কার্যকর করার সময়, এসকিউএল এক্সিকিউশন ইঞ্জিনগুলি সাধারণ আইলাম জবস হিসাবে দৃশ্যমান। এর অর্থ হ'ল আপনি "চাকরি" ট্যাবের অন্য কোনও কাজের মতো তাদের অবস্থা পর্যবেক্ষণ করতে পারেন, লগ এবং পরিসংখ্যান পরীক্ষা করতে পারেন।

স্পার্ক-সাবমিটের সময় জেভিএম হিপ আউট অফ মেমরি

If in engine’s launch logs, you find an error like this:

থ্রেড "প্রধান" আইও.ফ্যাব্রিক 8.কুবারনেটস.ক্লায়েন্ট.কুবারনেটস ক্লায়েন্টএক্সেপশনে ব্যতিক্রম: জাভা হিপ স্পেস 
io.fabric8.kubernetes.client.dsl.internal.OperationSupport.waitForResult এ (OperationSupport.java:520)
আইও.ফ্যাব্রিক 8.কুবারনেটস.ক্লায়েন্ট.ডিএসএল.অভ্যন্তরীণ। অপারেশনসাপোর্ট.হ্যান্ডেলরেসপন্স(OperationSupport.java:535)
...
org.apache.spark.deploy.SparkSubmit$.main(SparkSubmit.scala:1129)
org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)
কারণ: java.lang.OutOfMemoryError: Java heap space
...

It is likely caused by the default JVM heap size of Ilum’s internal spark-submit being too small for your task.

এটি ঠিক করতে, তুমি এতে স্যুইচ করতে পারো বাহ্যিক স্পার্ক জমা দিন . This way, the spark submit process will not be constrained to Ilum’s pod resources.