Programavimas

10 būdų, kaip pateikti užklausą „Hadoop“ su SQL

SQL: senas ir sugadintas. Hadoopas: naujas karštis. Tai yra įprasta išmintis, tačiau daugybė projektų, kuriuose „Hadoop“ duomenų saugyklose yra patogi SQL sąsaja, rodo, kad tikrai reikia produktų, kurie vykdo SQL užklausas pagal „Hadoop“ viduje esančius duomenis, o ne tik „Hadoop“ vietinių ataskaitų naudojimas arba „Hadoop“ duomenų eksportavimas į įprastą duomenų bazę.

„MapR“ gamina savo „Hadoop“ paskirstymą, o naujausias leidimas (4.0.1) sujungia jį su keturiais skirtingais varikliais, kad būtų galima pateikti užklausą dėl „Hadoop“ buteliuko SQL. Šios keturios yra reikšmingos „Hadoop“ SQL užklausų sistemos, tačiau yra kur kas daugiau „SQL-for-Hadoop“ technologijos, kurios sukurtos tenkinti įvairius poreikius ir naudojimo atvejus - nuo ezoterinės iki visuotinės.

Pirma, keturi SQL varikliai, pateikiami su „MapR“:

Apache avilys: Tai yra originalus „SQL-on-Hadoop“ sprendimas, bandantis imituoti „MySQL“ elgseną, sintaksę ir sąsają (-as), įskaitant komandinės eilutės klientą. Jame taip pat yra „Java“ API ir JDBC tvarkyklės tiems, kurie jau investuoja į „Java“ programas, atliekančias „MySQL“ stiliaus užklausas. Nepaisant santykinio paprastumo ir paprasto naudojimo, avilys buvo lėtas ir tik skaitomas, o tai sukėlė daugybę iniciatyvų jį patobulinti.

Stinger: „Hortonworks“, savo „Hadoop“ platintojų gamintojai, „Stinger“ projektą pradėjo kaip būdą paspartinti „Apache Hive“ plėtrą ir pagerinti jo našumą. Naujausiame projekto įsikūnijime „Stinger.next“ vienas iš dizaino tikslų yra „antrosios užklausos atsakymo laikas“ kartu su operacijų elgesio palaikymu (įterpimais, atnaujinimais ir ištrynimais). Visi šie pakeitimai turi pasirodyti per ateinančius 18 mėnesių, o toliau bus naudojamos kitos funkcijos, pvz., „SQL Analytics“.

Apache grąžtas: Atviro kodo „Google“ „Dremel“ (dar žinomas kaip „BigQuery“) diegimas buvo sukurtas, kad „Drill“ atliktų mažo delsos užklausas vienu metu su kelių tipų duomenų saugyklomis su skirtingomis užklausų sąsajomis (tokiomis kaip „Hadoop“ ir „NoSQL“) ir būtų labai keičiamos. „Drill“ taip pat norėjo vykdyti užklausas per įvairius vykdymo laikotarpius, trunkančius tik kelias milisekundes iki kelių minučių. „MapR“ tvirtina, kad „Drill“ yra orientuota į ateitį, o ne tik suderinama su atsilikimu, viena iš priežasčių, kodėl ji pasirinko savo projektą vystyti.

„Spark SQL“: „Apache“ „Spark“ projektas skirtas realiuoju laiku, atmintyje, lygiagrečiai apdoroti „Hadoop“ duomenis. „Spark SQL“ remiasi jos viršumi, kad būtų galima rašyti SQL užklausas pagal duomenis. Geresnis būdas galvoti apie tai gali būti „Apache Hive“, skirta „Apache Spark“, nes jame pakartotinai naudojami pagrindiniai „Hive“ technologijos elementai. Šia prasme tai yra priedas tiems, kurie jau dirba su „Spark“. (Ankstesnis projektas „Shark“ buvo įtrauktas į šį projektą.)

Be šių keturių, išsiskiria dar šeši:

Apache Phoenix: Jo kūrėjai tai vadina „SQL skin for HBase“ - būdas pateikti užklausą „HBase“ su SQL tipo komandomis per įterpiamą JDBC tvarkyklę, sukurtą didelio našumo ir skaitymo / rašymo operacijoms. Laikykite tai beveik nesuprantamu tiems, kurie naudojasi „HBase“, nes jis yra atviro kodo, agresyviai sukurtas ir aprūpintas naudingomis funkcijomis, tokiomis kaip masinis duomenų įkėlimas.

„Cloudera Impala“: Tam tikra prasme „Impala“ yra dar vienas „Dremel / Apache Drill“ diegimas, sukurtas išplėsti „Hive“, kad išėję „Hive“ vartotojai galėtų išnaudoti visas jo galimybes. HDFS arba HBase saugomiems duomenims galima pateikti užklausą, o SQL sintaksė, nuspėjama, yra tokia pati kaip „Apache Hive“. Tačiau pagrindinis „Impala“ skirtumas nuo „Drill“ yra tas, kad jis nėra skirtas agnostiniam šaltiniui; ji klausia tik Hadoopo.

Pagrindinio HD HAWQ: „Pivotal“ teikia savo „Hadoop“ paskirstymą („Pivotal HD“), o HAWQ yra patentuotas komponentas, skirtas atlikti SQL užklausas HDFS. Vadinasi, tai tik pagrindinis produktas, nors „Pivotal“ lemia lygiagretų SQL apdorojimą ir aukštą atitikimą SQL standartams.

„Presto“: Sukurtas „Facebook“ inžinierių ir naudojamas toje įmonėje, šis atvirojo kodo užklausų variklis primena „Apache Drill“ tuo, kad yra šaltinio agnostikas. Jis gali pateikti užklausas tiek „Hive“, tiek „Cassandra“ naudodamas ANSI SQL komandas, o kūrėjai gali išplėsti sistemą, naudodamiesi jos paslaugų teikėjo sąsaja, parašydami jai jungtis. Kai kurios duomenų įterpimo funkcijos yra palaikomos, tačiau jos vis tiek yra labai paprastos: negalima atlikti naujinimų, tik įdėklus.

„Oracle Big Data SQL“: Tai buvo tik laiko klausimas, kol „Oracle“ išleido savo „SQL“ užklausų „Hadoop“ sąsają. Kaip ir „Drill“, jis gali pateikti užklausą tiek „Hadoop“, tiek kitose „NoSQL“ parduotuvėse. Tačiau skirtingai nei „Drill“, tai yra „Oracle“ produktas ir jis integruojamas tik su „Oracle Database 12c“ ir naujesnėmis versijomis, o tai rimtai riboja jo rinką.

„IBM BigSQL“: Tai buvo tik laiko klausimas, kada IBM padarė tą patį, nors 2013 m. Pradžioje ji paskelbė apie pirmąją „BigSQL“ technologinę peržiūrą. Deja, kaip ir „Oracle“ pasiūlymu, jis yra susietas su konkrečiu IBM produktu, esančiu galinėje pusėje - šiuo atveju , IBM „Hadoop“, „InfoSphere BigInsights“. Be to, priekinė galas gali būti standartinis JDBC / ODBC klientas, o į užklausas gali būti įtraukti duomenys iš „IBM DB2“, „Teradata“ ar „PureData Systems“, skirti „Analytics“ egzemplioriams.