API দিয়ে Query Execution এবং Result Fetching

Database Tutorials - অ্যাপাচি প্রেস্টো (Apache Presto) Presto API Integration |
213
213

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

Presto API একটি RESTful API যা JSON ফর্ম্যাটে কোয়েরি এক্সিকিউশনের ফলাফল প্রদান করে। এই API ব্যবহার করে আপনি Presto সার্ভারে কোয়েরি পাঠাতে, এক্সিকিউট করতে এবং ফলাফল রিটার্ন করতে পারেন।


Presto API Overview

Presto API তে REST API পদ্ধতি ব্যবহৃত হয় এবং এটি কোয়েরি এক্সিকিউশন, রেজাল্ট ফেচিং এবং কোয়েরি স্টেটাস ট্র্যাক করার জন্য একটি পরিষ্কার ইন্টারফেস প্রদান করে।

Presto API তে প্রধানত দুটি HTTP রিকোয়েস্ট টাইপ ব্যবহার করা হয়:

  1. POST (Query Execution)
  2. GET (Query Results Fetching)

API Endpoint:
Presto সার্ভারে কোয়েরি এক্সিকিউশন এবং ফলাফল ফেচ করার জন্য আপনাকে Presto Coordinator Node এর HTTP সার্ভারে রিকোয়েস্ট পাঠাতে হবে। সাধারণত Presto সার্ভারের URL এর মতো:
http://<coordinator-ip>:8080/v1/statement


১. Query Execution via Presto API

Presto API ব্যবহার করে কোয়েরি এক্সিকিউট করার জন্য HTTP POST রিকোয়েস্ট পাঠানো হয়, যেখানে কোয়েরি পাঠানো হয় এবং কোয়েরি এক্সিকিউশনের জন্য প্রস্তুত করা হয়।

API Request (POST):

কোয়েরি এক্সিকিউট করার জন্য নিচের মত একটি POST রিকোয়েস্ট পাঠানো হয়:

URL:

POST http://<coordinator-ip>:8080/v1/statement

Body (Request):

{
  "query": "SELECT * FROM hive.default.orders WHERE order_status = 'shipped'"
}

এই রিকোয়েস্টে:

  • query: যে SQL কোয়েরি আপনি এক্সিকিউট করতে চান তা পাঠানো হয়।

Headers:

Content-Type: application/json

Response (Success):

এটি সফলভাবে কোয়েরি এক্সিকিউট হলে, একটি 200 OK রেসপন্স কোড ফেরত দেয় এবং কোয়েরি এক্সিকিউশনের জন্য id সহ একটি রেসপন্স প্রদান করা হয়।

Example Response:

{
  "id": "3e51a43d-f400-4209-9573-5458f7b1fbd1"
}
  • id: কোয়েরি এক্সিকিউশনের একটি ইউনিক আইডি যা আপনি কোয়েরির ফলাফল অনুসন্ধান করতে ব্যবহার করবেন।

২. Query Result Fetching via Presto API

কোয়েরি এক্সিকিউট করার পরে, Presto API ব্যবহার করে কোয়েরি ফলাফল ফেচ করা যায়। কোয়েরি এক্সিকিউশন সম্পূর্ণ হলে, GET রিকোয়েস্ট ব্যবহার করে আপনি ফলাফল সংগ্রহ করতে পারেন।

API Request (GET):

Presto সার্ভারের v1/query/<query-id>/final এ রিকোয়েস্ট পাঠাতে হয় যাতে কোয়েরির ফলাফল পাওয়া যায়।

URL:

GET http://<coordinator-ip>:8080/v1/query/3e51a43d-f400-4209-9573-5458f7b1fbd1

এখানে 3e51a43d-f400-4209-9573-5458f7b1fbd1 হল কোয়েরি এক্সিকিউশন আইডি যা POST রিকোয়েস্ট থেকে প্রাপ্ত হয়।

Response (Query Result):

এটি সফলভাবে কোয়েরির ফলাফল ফিরিয়ে দেয়, যেখানে columns এবং data (ফলাফল রেকর্ড) প্রদান করা হয়।

Example Response:

{
  "columns": [
    {"name": "order_id", "type": "varchar"},
    {"name": "customer_id", "type": "varchar"},
    {"name": "order_status", "type": "varchar"}
  ],
  "data": [
    {"order_id": "12345", "customer_id": "6789", "order_status": "shipped"},
    {"order_id": "12346", "customer_id": "6790", "order_status": "shipped"}
  ]
}
  • columns: কোয়েরির কলাম নাম এবং তাদের টাইপের তথ্য প্রদান করে।
  • data: কোয়েরির ফলাফল রেকর্ডের তালিকা (যতগুলো রেকর্ড কোয়েরিতে পাওয়া গেছে)।

৩. Handling Large Result Sets

Presto তে যদি কোয়েরির ফলাফল খুব বড় হয়, তাহলে pagination ব্যবহার করা যেতে পারে, যা অনেক ফলাফলকে ছোট ছোট অংশে বিভক্ত করে। API থেকে paginated results পাওয়া গেলে, আপনাকে পরবর্তী ফলাফল পেতে nextToken ব্যবহার করতে হতে পারে।

Paginated Query Result Example:

{
  "columns": [
    {"name": "order_id", "type": "varchar"},
    {"name": "customer_id", "type": "varchar"},
    {"name": "order_status", "type": "varchar"}
  ],
  "data": [
    {"order_id": "12345", "customer_id": "6789", "order_status": "shipped"}
  ],
  "nextToken": "abc123"
}

এই ক্ষেত্রে, nextToken ব্যবহার করে পরবর্তী ফলাফল পেতে API রিকোয়েস্ট করতে হবে।


৪. Error Handling and Query Status

Presto API কোয়েরি এক্সিকিউশনের সময় query-id ব্যবহার করে স্ট্যাটাস এবং এর ফলাফল চেক করতে পারে। কোয়েরি এক্সিকিউশন যদি ব্যর্থ হয়, API আপনাকে ত্রুটির বার্তা প্রদান করবে।

Error Response Example:

{
  "error": {
    "message": "Failure while executing query",
    "errorCode": "SYNTAX_ERROR",
    "failureInfo": "Invalid SQL syntax"
  }
}

এটি নির্দেশ করে যে কোয়েরির সঠিক SQL সিনট্যাক্স ছিল না, এবং ত্রুটির কোড সহ একটি বিস্তারিত বার্তা প্রদান করা হয়েছে।


৫. Presto API Example Using Python (Request and Fetch)

Python ব্যবহার করে Presto API এর মাধ্যমে কোয়েরি এক্সিকিউট এবং ফলাফল ফেচ করার উদাহরণ:

import requests
import json

# Step 1: Execute the query
url = "http://<coordinator-ip>:8080/v1/statement"
headers = {"Content-Type": "application/json"}
query = {"query": "SELECT * FROM hive.default.orders WHERE order_status = 'shipped'"}

response = requests.post(url, headers=headers, data=json.dumps(query))

# Get query ID from the response
query_id = response.json()["id"]
print(f"Query ID: {query_id}")

# Step 2: Fetch the results
result_url = f"http://<coordinator-ip>:8080/v1/query/{query_id}"
result_response = requests.get(result_url)

# Check if the query finished
if "data" in result_response.json():
    print("Query Results: ", result_response.json()["data"])
else:
    print("Query still running, waiting for result...")

এই কোডের মাধ্যমে:

  1. প্রথমে একটি POST রিকোয়েস্ট পাঠিয়ে কোয়েরি এক্সিকিউট করা হয়।
  2. পরে GET রিকোয়েস্টের মাধ্যমে কোয়েরির ফলাফল ফেচ করা হয়।

সারাংশ

Presto API এর মাধ্যমে আপনি SQL কোয়েরি এক্সিকিউট এবং ফলাফল ফেচ করতে পারেন। POST রিকোয়েস্ট দিয়ে কোয়েরি এক্সিকিউট করা হয় এবং GET রিকোয়েস্ট ব্যবহার করে ফলাফল ফেচ করা হয়। API Error Handling এবং Pagination-এর মাধ্যমে আপনি বড় ডেটাসেটের ক্ষেত্রে কোয়েরি ফলাফল সহজে পরিচালনা করতে পারেন। Presto API এর মাধ্যমে কোয়েরি এক্সিকিউশন এবং ফলাফল প্রাপ্তি সহজ ও কার্যকরী একটি প্রক্রিয়া, যা প্রোগ্রাম্যাটিক্যালি ডেটাবেসের সাথে যোগাযোগের জন্য ব্যবহার করা যায়।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion