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

ভূমিকা

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


পূর্বশর্ত

আপনার নিম্নলিখিতগুলি রয়েছে তা নিশ্চিত করুন:

  • হেলম ইনস্টল সহ কুবারনেটস ক্লাস্টার।
  • কুবেক্টল আপনার ক্লাস্টার অ্যাক্সেস করতে কনফিগার করা হয়েছে।
  • আপনার স্থানীয় মেশিনে পাইথন 3.8+।
  • ডিবিটি, স্পার্ক এবং কুবারনেটসের প্রাথমিক বোঝা।

🛠️ Deploying Ilum with Kyuubi and Hive Metastore

থ্রিফ্ট সার্ভার হিসাবে এসকিউএল মডিউল সহ ইলুম স্থাপন করুন এবং হেলম ব্যবহার করে হাইভ মেটাস্টোর সক্ষম করুন:

রেপো যোগ করুন https://charts.ilum.cloud 
Helm installation il and ile/el \
--সেট ilum-Hive-metastore.enabled=true \
--set ilum-core.metastore.enabled=true \
--set ilum-core.metastore.type=hive \
--সেট ilum-sql.enabled=true \
--সেট ilum-core.sql.সক্ষম=সত্য

🔗 Connecting to the Thrift Server

  • সেবাটি চিহ্নিত করুনঃ

    কুবেক্টল সেবা পান 

    এর নামে "এসকিউএল-থ্রিফ্ট-বাইনারি" দিয়ে পরিষেবাটি সন্ধান করুন।

  • পোর্ট-ফরোয়ার্ড:

    কুবেক্টল পোর্ট-ফরোয়ার্ড এসভিসি / আইএলইউএম-এসকিউএল-থ্রিফ্ট-বাইনারি 10009: 10009 

    এটি থ্রিফ্ট সার্ভারকে এখানে উপলব্ধ করে তোলে লোকালহোস্ট:10009 .

  • আপনি চাইলে বেলাইন দিয়ে পরীক্ষা করুন:

    Beline -u "jdbc:hive2://localhost:10009/default" 

    চালনা:

    দেখান  টেবিল ; 

    একটি খালি তালিকা বা বিদ্যমান টেবিল আশা করুন।


🧱 Configuring and Running dbt

বিশুদ্ধ পরিবেশ (যদি প্রয়োজন হয়):

পিপ আনইনস্টল ডিবিটি-স্পার্ক পাইস্পার্ক -ওয়াই 

dbt CLI এবং Spark অ্যাডাপ্টার ইনস্টল করুন:

পিপ ইনস্টল পাইস্পার্ক = = 3.5.3 
পিআইপি ইনস্টল ডিবিটি-কোর
পিপ ইনস্টল "ডিবিটি-স্পার্ক [পাইহাইভ, সেশন]"

ইনস্টলেশন যাচাই করুন:

ডিবিটি --সংস্করণ 

🚀 Create dbt project

একটি ডিবিটি প্রকল্প শুরু করুন (যদি প্রয়োজন হয়):

DBT init ilum_dbt_project 

নিম্নলিখিত হিসাবে সেটআপ প্রম্পটগুলির উত্তর দিন (আপনার সেটআপের জন্য সামঞ্জস্য করুন):

কোন ডাটাবেজ? '১' (স্ফুলিঙ্গ) 
উপস্থাপক: 'লোকালহোস্ট'
কাঙ্ক্ষিত প্রমাণীকরণ পদ্ধতি: '3' (থ্রিফ্ট)
পোর্ট: '10009'
স্কিমা: 'ডিফল্ট'
থ্রেড: '1'

এটি ~/.dbt/ এ ilum_dbt_project ডিরেক্টরি এবং একটি profiles.yml ফাইল তৈরি করে।

⚙️ Configure dbt for Ilum

  • সম্পাদনা ~/.dbt/profiles.yml :

    ilum_dbt_project : 
    লক্ষ্য : দেব
    আউটপুট :
    দেব :
    টাইপ : স্ফুলিঙ্গ
    পদ্ধতি : মিতব্যয়িতা
    আয়োজক : লোকালহোস্ট
    পোর্ট : 10009
    স্কীমা : ডিফল্ট
    থ্রেডসমূহ : 1
    connect_retries : 5
    connect_timeout : 60
    connect_args :
    ইউআরএল : "jdbc:hive2://localhost:10009/default; পরিবহনমোড = বাইনারি; হাইভ.সার্ভার 2.ট্রান্সপোর্ট.মোড = বাইনারি"
    ড্রাইভার : "org.apache.hive.jdbc.HiveDriver"
    অথ : "কেউ না"
  • টেস্ট সংযোগ:

    সিডি ilum_dbt_project 
    ডিবিটি ডিবাগ

থ্রিফ্ট সার্ভারের সাথে একটি সফল সংযোগ নির্দেশ করে কোনও ত্রুটি উপস্থিত না হওয়া নিশ্চিত করুন।


📦️ Create a Model to Write Data

  • মডেল তৈরি করুন:
  • মডেল/sample_data.sql

    {{ কনফিগারেশন ( বাস্তবায়িত = 'টেবিল' ) }} 

    নির্বাচন
    আইডি ,
    নাম
    থেকে (
    মানসমূহ
    ( 1 , 'অ্যালিস' ) ,
    ( 2 , 'বব' )
    ) হিসেবে t ( আইডি , নাম )
  • রান মডেল:

    ডিবিটি রান - মডেল sample_data 

️ Create a Model to Read Data

  • মডেল তৈরি করুন:
  • মডেল/read_data.sql
{{ কনফিগারেশন ( বাস্তবায়িত = 'টেবিল' ) }} 

নির্বাচন
আইডি ,
নাম ,
দৈর্ঘ্য ( নাম ) হিসেবে name_length
থেকে {{ রেফ ( 'sample_data' ) }}
  • রান মডেল:

    ডিবিটি রান - মডেল read_data 

📊 Verify Results

  • ইলম ইউআইতে মনিটর জব:

    • ইলাম ইউআই অ্যাক্সেস করুন (আপনার আইলুম সেটআপে সরবরাহ করা ইউআরএল, উদাঃ পোর্ট-ফরোয়ার্ড)।
    • জবস বিভাগে নেভিগেট করুন।
    • ইলুম-এসকিউএল-স্পার্ক-ইঞ্জিন নামের চাকরিটি সন্ধান করুন।
    • সফল প্রক্রিয়াকরণ নিশ্চিত করতে কাজের স্থিতি, লগ এবং সম্পাদনের বিশদ পরীক্ষা করুন।
  • আপনি বেলাইনের সাথে প্রশ্ন করতে পারেন:

    Beline -u "jdbc:hive2://localhost:10009/default" 
    • চালনা:

      নির্বাচন  *  থেকে  ডিফল্ট . read_data ; 

      প্রত্যাশিত:

      +----+-----+------------+ 
      | আইডি | নাম | name_length|
      +----+-----+------------+
      | 1 | অ্যালিস | 5 |
      | 2 | বব | 3 |
      +----+-----+------------+

আপনি এখন আরও উন্নত মডেল, পরীক্ষা ( ডিবিটি পরীক্ষা ), এবং ডকুমেন্টেশন ( ডিবিটি ডক্স জেনারেট এবং ডিবিটি ডক্স পরিবেশন করে ).


🌐 Alternative: Using পদ্ধতি: সেশন স্পার্ক কানেক্ট সহ

থ্রিফ্ট সার্ভারের বিকল্প হিসাবে, তুমি ডিবিটি-স্পার্ককে সরাসরি স্পার্ক ক্লাস্টারে সংযুক্ত করতে স্পার্ক কানেক্ট ব্যবহার করতে পারো। এই পদ্ধতিটি থ্রিফ্ট সার্ভারটি নির্মূল করে সেটআপটি সহজ করে এবং নির্ভরতা দ্বন্দ্ব হ্রাস করে, এটি স্পার্ক 3.5+ ব্যবহারকারীদের জন্য আদর্শ করে তোলে।

স্পার্ক কানেক্ট কী?

স্পার্ক কানেক্ট অ্যাপাচি স্পার্ক 3.5+ এর একটি বৈশিষ্ট্য যা ক্লায়েন্টদের জিআরপিসি এন্ডপয়েন্টের মাধ্যমে সরাসরি স্পার্ক ক্লাস্টারের সাথে সংযোগ করতে দেয়। এটি একটি থ্রিফ্ট সার্ভারের প্রয়োজন ছাড়াই এসকিউএল এক্সিকিউশন এবং ডেটাফ্রেম অপারেশন সক্ষম করে।

এর মধ্যে পার্থক্য পদ্ধতি: সেশন এবং পদ্ধতি: মিতব্যয়িতা

  • পদ্ধতি: মিতব্যয়িতা : থ্রিফ্ট প্রোটোকল ব্যবহার করে একটি থ্রিফ্ট সার্ভারের সাথে সংযোগ করে।
  • পদ্ধতি: সেশন : থ্রিফ্ট সার্ভারকে বাইপাস করে স্পার্ক কানেক্টের মাধ্যমে সরাসরি একটি স্পার্ক ক্লাস্টারের সাথে সংযোগ স্থাপন করে।

উপকারিতা এর পদ্ধতি: সেশন :

  • থ্রিফ্ট সার্ভার নির্ভরতা নেই।
  • কম উপাদান সঙ্গে সহজ কনফিগারেশন।
  • Direct access to Spark’s SQL engine.

🛠️ Deploy spark connect job

  • Ilum UI তে লগ ইন করুন
  • কাজের তালিকায় নেভিগেট করুন
  • নতুন চাকরি তৈরি করুনঃ
    • নাম: স্পার্ক-কানেক্ট
    • শ্রেণী: org.apache.spark.sql.connect.SimpleSparkConnectService

spark connect form general

  • সংস্থান: স্পার্ক-কানেক্ট জার, আপনি এটি থেকে ডাউনলোড করতে পারেন এখানে

spark connect form resources

🔗 Connecting to the spark-connect job

  • স্পার্ক-কানেক্ট ড্রাইভার পড খুঁজুন
    kubectl -n ilum-test get po -l ilum.jobId=<job-id-found-on-ilum-UI> 
  • পোর্ট-ফরোয়ার্ড ড্রাইভার পড:
    কুবেক্টল পোর্ট-ফরোয়ার্ড পড /<spark-connect-job-driver> 15002: 15002 

🚀 Create dbt project

একটি ডিবিটি প্রকল্প শুরু করুন (যদি প্রয়োজন হয়):

DBT init ilum_dbt_spark_connect_project 

নিম্নলিখিত হিসাবে সেটআপ প্রম্পটগুলির উত্তর দিন (আপনার সেটআপের জন্য সামঞ্জস্য করুন):

কোন ডাটাবেজ? '১' (স্ফুলিঙ্গ) 
উপস্থাপক: 'লোকালহোস্ট'
পছন্দসই প্রমাণীকরণ পদ্ধতি: '4' (সেশন, কোনও সেশন বিকল্প না থাকলে থ্রিফ্ট চয়ন করুন)
বন্দর: '15002'
স্কিমা: 'ডিফল্ট'
থ্রেড: '1'

এটি ilum_dbt_spark_connect_project ডিরেক্টরি তৈরি করে এবং ~/.dbt/ এ profiles.yml ফাইলটি আপডেট করে।

⚙️ Configure dbt for spark connect

  • সম্পাদনা ~/.dbt/profiles.yml :

    ilum_dbt_spark_connect_project : 
    লক্ষ্য : দেব
    আউটপুট :
    দেব :
    টাইপ : স্ফুলিঙ্গ
    পদ্ধতি : সুসংবদ্ধ
    আয়োজক : লোকালহোস্ট
    পোর্ট : 15002
    স্কীমা : ডিফল্ট
    থ্রেডসমূহ : 1
  • টেস্ট সংযোগ:

    সিডি ilum_dbt_spark_connect_project 
    ডিবিটি ডিবাগ

📦️ Create a Model to Write Data

  • মডেল তৈরি করুন:
  • মডেল/sample_data_connect.sql

    {{ কনফিগারেশন ( বাস্তবায়িত = 'টেবিল' ) }} 

    নির্বাচন
    আইডি ,
    নাম
    থেকে (
    মানসমূহ
    ( 1 , 'পিটার' ) ,
    ( 2 , 'জন' )
    ) হিসেবে t ( আইডি , নাম )
  • রান মডেল:

    ডিবিটি রান - মডেল sample_data_connect 

️ Create a Model to Read Data

  • মডেল তৈরি করুন:
  • মডেল/read_data_connect.sql
{{ কনফিগারেশন ( বাস্তবায়িত = 'টেবিল' ) }} 

নির্বাচন
আইডি ,
নাম ,
দৈর্ঘ্য ( নাম ) হিসেবে name_length
থেকে {{ রেফ ( 'sample_data_connect' ) }}
  • রান মডেল:

    ডিবিটি রান - মডেল read_data_connect 

📊 Verify Results

  • ইলম ইউআইতে মনিটর জব:

    • ইলাম ইউআই অ্যাক্সেস করুন (আপনার আইলুম সেটআপে সরবরাহ করা ইউআরএল, উদাঃ পোর্ট-ফরোয়ার্ড)।
    • জবস বিভাগে নেভিগেট করুন।
    • স্পার্ক-কানেক্ট নামের চাকরিটি সন্ধান করুন।
    • সফল প্রক্রিয়াকরণ নিশ্চিত করতে কাজের স্থিতি, লগ এবং সম্পাদনের বিশদ পরীক্ষা করুন।
  • ডিবিটি জবে ডেটা মুদ্রণ করুন: স্পার্ক গুদামে অবতরণ করা ডেটা যাচাই করতে (উদাঃ, স্পার্ক-গুদাম/read_data_connect আপনার প্রকল্প ডিরেক্টরির সাথে সম্পর্কিত), একটি ডিবিটি ম্যাক্রো তৈরি করুন এবং ক্যোয়ারী এবং মুদ্রণের জন্য একটি কাস্টম অপারেশন চালান read_data_connect table’s contents during the dbt job.

    আপনার ডিবিটি প্রকল্প ডিরেক্টরিতে একটি ম্যাক্রো ফাইল তৈরি করুন:

    • ম্যাক্রো/print_table.sql :

      { % ম্যাক্রো print_table ( table_name )  % } 
      { % সেট ক্যোয়ারী % }
      নির্বাচন * থেকে {{ রেফ ( table_name ) }}
      { % সমাপ্তি % }
      { % কি লগ ( এর জন্য টেবিলের বিষয়বস্তু মুদ্রণ করা' ~ table_name ~ ':' , সত্য ) % }
      { % সেট ফলাফল = run_query ( ক্যোয়ারী ) % }
      { % যদি ফলাফল % }
      { % জন্য সারি মধ্যে ফলাফল % }
      { % কি লগ ( সারি , সত্য ) % }
      { % এন্ডফর % }
      { % অন্য % }
      { % কি লগ ( 'কোনও তথ্য পাওয়া যায়নি' ~ table_name , সত্য ) % }
      { % এন্ডআইএফ % }
      { % এন্ডম্যাক্রো % }

    মুদ্রণ করতে ম্যাক্রো চালান read_data_connect আপনার ডিবিটি মডেলের পরে টেবিল:

    ডিবিটি রান-অপারেশন print_table --আর্গস '{"table_name": "read_data_connect"}' 

    ডিবিটি রান-অপারেশন কমান্ড ম্যাক্রো কার্যকর করে, ক্যোয়ারিং করে read_data_connect সারণী এবং এর বিষয়বস্তু লগিং করা। ডিবিটি লগ বা কনসোলে প্রত্যাশিত আউটপুট:

    read_data_connect জন্য টেবিল বিষয়বস্তু মুদ্রণ: 
    <অ্যাগেট.রো: (2, 'জন', 4)>
    <অ্যাগেট.রো: (1, 'পিটার', 5)>

    নোট : আউটপুটটি ডিবিটি লগ বা কনসোলে ডিফল্টরূপে ডিবিটি 1.9.4 এ উপস্থিত হয়। আরও বিস্তারিত লগের জন্য, আপনি ব্যবহার করতে পারেন:

    ডিবিটি রান-অপারেশন print_table --args '{"table_name": "read_data_connect"}' --log-level debug 

প্রতিটি পদ্ধতি কখন ব্যবহার করবেন

  • পদ্ধতি ব্যবহার করুন: আপনার যদি বেলাইনের মতো সরঞ্জামগুলির সাথে সামঞ্জস্যের প্রয়োজন হয় বা থ্রিফ্ট সার্ভার সেটআপ ব্যবহার করেন তবে থ্রিফ্ট।
  • পদ্ধতি ব্যবহার করুন: আপনি যদি থ্রিফ্ট সার্ভার ছাড়াই একটি সহজ সেটআপ পছন্দ করেন এবং স্পার্ক 3.5+ ব্যবহার করেন তবে সেশন।