زبان SQL (یا Structured Query Language) کلاسیک ترین زبان پرس و جو داده است، که در آغاز تنها برای پایگاه داده های رابطه ای (RDBMS) طراحی شده است که بر پایه جبر رابطه ای هستند. این زبان دربرگیرنده چهار عملگر بنیادی ۱) ایجاد (CREATE)، درج (INSERT)، بروزرسانی (UPDATE)، پاک کردن (DELETE) است که برای تغییر مجموعه داده های به کار می روند که به ساختار حدول ها نگهداری و مدیریت می شوند.

برنامه نویسی SQL

زبان پرس و جوی هایو

هایو (Hive) یک نرم افزار انبار داده ها (Data Warehouse)، درون اکوسیستم هدوپ است که ابزاری برای انجام پرس و جو است. هایو با فراهم کردن یک زبان بر پایه SQL، اجازه می دهد تا بتوانیم منابع داده ای از پایگاه داده ها و یا فایل های متنی را واکشی کنیم و از این پس آنها را درون هدوپ به کار ببریم.

زبان پرس و جوی هایو (Hive Query Language یا HQL) همه ویژگی های SQL استاندارد مانند ساخت نما (View) را ندارد ولی برخی از ویژگی ها مانند اندیس گذاری (Indexing) و زیر پرس و جو های همانند SQL استاندارد را پشتیبانی می کند. HQL ویژگی هایی مانند درج درون چندین جدول (Multi Table Insert) و ساخت جدول ها با واکشی (Create Table as Select) را فراهم کرده که سر راست در خود SQL استاندارد پشتیبانی نمی شوند.

زیر کوئری های SQL – بخش یکم

زیر کوئری های SQL – بخش دوم

کد زیر نمونه ای از پرس و جو هایو HQL را نشان می دهد و نی بینید که از عبارت هایی همچون SELECT و GROUP BY نیز پشتیبانی می کند. همچنین در زیر، فهرستی از گونه ها داده (Data Type) و عبارت های درون HQL فهرست شده است. توجه کنید با اینکه HQL تا اندازه ای همانند SQL استاندارد است، ولی آن ویژه به کارگیری در محیط توزیع شده هدوپ طراحی شده است.

SparkSQL

در نوشته پیشین تا اندازه ای درباره چارچوب اسپارک (Spark) گفته ایم. اسپارک بر پایه زبان جاوا نوشته شده است ولی API هایی را به زبان های اسکالا، پایتون و R فراهم شده است. در کنار این، درون اسپارک، یک زبان همانند SQL رابطه ای، به نام SparkSQL فراهم شده است که بر پایه مدل DataFrame ساخته شده و مجموعه داده های ورودی را به عنوان ساختاری بر پایه جدول در نظر می گیرند.

دیتافریم مفهومی بنیادی در SparkSQL است، زیرا بر پایه شکل زیر، در کنار ساختار SQL، می توان داده های منابع گوناگون را به فرمتی یکپارچه خواند. دیتافریم، همانند آنچه که در ماژول Panda هست، یک ساختار جدولی (ستون – سطر) است ولی اجازه می دهد بی توجه به منبع داده، درون برنامه ها (در اینجا برنامه های اسپارک) داده ها را به فرمتی یکپارچه بخوانیم.

در کدهای زیر که به زبان اسکالا هستند، نخست یک دیتافریم (تابع toDF) از روی یک فایل متنی (تابع textFile) ساخته می شود. سپس بر پایه جدا کننده ویرگول (,) رشته های درون فایل از هم جدا شده و سپس به گونه شماره صحیح (تابع toInt) تبدیل می شوند و در پایان یک متغیر به نام people ساخته می شود که یک دیتافریم است. سپس این دیتافریم که به ریخت و ساختار جدول است به کمک دستورهای SQL فراهم شدهدر SparkSQL پرس و جو می شوند. بنابراین اسپارک اجازه می دهد تا داده های از منابع گوناگون را به ریخت دیتافریم پرس و جو کنید.