Kuo skiriasi „Spark“ ir „Presto“?


Atsakymas 1:

Vertinant užklausos modulį, svarbu atsižvelgti į holistinį požiūrį į daugelį aspektų, įskaitant impulsą, pardavėjo palaikymą, esamų funkcijų rinkinį ir ateities evoliucijos architektūrą. Apsvarstykime „Apache Spark vs Presto“ pagal šiuos matmenis.

Akimirka

Atvirojo kodo dalyvių bazė: „Spark“ atvirojo kodo bendruomenė yra keliais veiksniais didesnė nei „Presto“. Pačiam „Apache Spark“ yra daugiau nei 1400 bendraautorių, o vien „Spark SQL“ - daugiau nei 450. Priešingai, „Presto“ turi 164 atskirus „GitHub“ bendraautorius ir 229 skirtingus el. Pašto adresus.

Vartotojų bazė: „Presto“ daugiausia naudoja saujelė Silicio slėnio technologijų kompanijų, o „Spark“ peržengė plyšį ir plačiai naudojama „į rytus nuo Sakramento“ ir visame pasaulyje, pvz., „Walmart“, „Bloomberg“, „Capital One“ ir CERN. Beveik visi Silicio slėnio technologijų startuoliai ir jėgainės naudoja „Spark“, o dauguma „Fortune 500“ naudoja „Spark“ arba planuoja naudoti „Spark“.

Pardavėjo palaikymas: Beveik kiekvienas pardavėjas palaiko „Spark“ ir „Spark SQL“, o tik nedaugelis (pvz., „Teradata“) palaiko „Presto“.

Funkcijų rinkinys

ANSI SQL 2003 palaikymas: „Spark SQL“ yra geriausias ANSI SQL 2003 standarto palaikymas tarp visų didžiųjų duomenų SQL variklių. Atminkite, kad jokia duomenų bazė / užklausų variklis nepalaiko viso ANSI SQL standartų rinkinio. Kai kurie užklausų varikliai atitinka daugiau standartų nei kiti. Tai, kaip mes įvertiname, yra tai, kad „Spark SQL“ gali paleisti visas 99 TPC-DS užklausas be modifikacijų, tuo tarpu didžioji dauguma kitų variklių negali (įskaitant „Presto“). Tiesą sakant, 99 TPC-DS užklausos yra tikrinamos „Spark SQL“ šaltinio kodų saugykloje.

Sudėtingos ir ilgos užklausos: „Spark SQL“ palaiko sudėtingesnes ir ilgesnes užklausas. Kita vertus, „Presto“ iš pradžių buvo sukurtas trumpoms interaktyvioms užklausoms, todėl sunku palaikyti didelius prisijungimus ar sudėtingas kelių pakopų užklausas. Atsižvelgiant į šį trūkumą, „Facebook“ (įmonė, sukūrusi „Presto“) vis dažniau naudoja „Spark“ sudėtingam ETL darbo krūviui vietoj „Presto“ ir „Hive“.

„BI / JDBC“ / „ODBC“ ryšys: „Spark SQL“ ir „Presto“ turi BI / JDBC / ODBC ryšį.

Sąveikumas su skirtingais duomenų šaltiniais: abu turi gana geras duomenų šaltinių API, leidžiančias trečiosioms šalims kurti jungtis ir veikti kaip pusiau federacinius variklius. Tačiau užklausų sujungimas yra toks naudingas, kiek duomenų šaltinių, prie kurių variklis gali prisijungti. Dėl skirtingos vartotojų bazės aprėpties yra daugiau jungčių, skirtų „Spark“ sujungti tiek su įmonės duomenų šaltiniais, tiek su atvirojo kodo duomenų šaltiniais, pvz., „Oracle“, DB2, „MongoDB“, „Redis“, „Cassandra“, „ElasticSearch“.

Spektaklis

Architektūra ir inovacijos: Dėl savo akademinių šaknų „Spark“ bendruomenė yra nepaprastai novatoriška. Kaip pavyzdį, „Catalyst“ optimizatorius yra geriausias atvirojo kodo optimizavimo įrankis, kurį mačiau, kai kalbame apie išplėtimą ir moduliavimą. Volframo vykdymo variklis su viso etapo kodų generavimu yra moderniausias, derinant geriausios veislės idėjas iš šiuolaikinių kompiliatorių ir duomenų bazių sistemų. Tarp visų šių dienų atvirojo kodo užklausų variklių galiu užtikrintai pasakyti, kad „Spark“ turi geriausią architektūrą, skirtą eksploatavimo inžinerijai, ir daugeliu atvejų turėtų būti našesnė.

Lyginamasis indeksas: „AtScale“ palygino „Impala“, „Spark“, „Hive“ ir „Presto“ naujausiame etalone. „Spark“ buvo greičiausias užklausų variklis per 7 iš 13 užklausų. „Impala“ laimėjo 6 iš 13. „Presto“ ir „Hive“ pasirodė prasčiausiai. „Spark“ buvo greitesnė nei „Presto“ daugeliu atvejų (11 iš 13 užklausų), o kai kuriais atvejais daugiau nei 4 kartus greitesnė.

Žinoma, paskutinis taškas dar nereiškia, kad „Spark“ visada yra veiksmingesnė. Yra sričių, kuriose „Presto“ šiuo metu yra optimizuotas. Pavyzdžiui, „Presto“ vartotojai linkę naudoti ORC kaip kanoninį formatą, todėl „Presto“ turi greitesnį ORC skaitytuvą, tuo tarpu „Spark“ turi greitesnį, vektorizuotą „Parquet“ skaitytuvą (ir dirbame greitesnį ORC skaitytuvą).

Mes dirbame su savo klientais užtikrindami, kad efektyviausias jų darbo krūvio vykdymo būdas yra „Spark“, esantis „Databricks“. Jei jis buvo lėtesnis už kitą variklį, mes jį laikome klaida ir greitai adresuojame.

Apibendrinant galima pasakyti, kad „Spark“ ir „Spark SQL“ turi didesnę ir labiau subrendusią ekosistemą, turtingesnes funkcijas ir naudojasi daug daugiau organizacijų, turinčių įvairesnius reikalavimus.


Atsakymas 2:

Aš nežinau „Presto“, tačiau aš atsakau, kad „Presto“ ir „PostgreSQL“ dažniausiai yra nuorodos į SQL palaikymą „Spark SQL“ (tikiu, kad SQL ANTLR gramatika buvo pasiskolinta iš „Presto“).

„Spark SQL“ yra paskirstytas atminties skaičiavimo variklis, turintis SQL sluoksnį struktūrizuotų ir pusiau struktūruotų duomenų rinkinių viršuje. Jis palaiko užklausas, aprašytas ANSI SQL, „Hive QL“ ir savo užklausą DSL (naudojant duomenų rinkinio API).

Kaip ir daugelis SQL ir NoSQL duomenų bazių, „Spark SQL“ siūlo našumo užklausų optimizavimą, naudojant „Catalyst Logical Query Plan Optimizer“, kodo generavimą (kuris dažnai yra geresnis už jūsų pasirinktinį kodą!) Ir volframo vykdymo variklį su savo vidiniu dvejetainiu eilučių formatu.


Atsakymas 3:

Aš nežinau „Presto“, tačiau aš atsakau, kad „Presto“ ir „PostgreSQL“ dažniausiai yra nuorodos į SQL palaikymą „Spark SQL“ (tikiu, kad SQL ANTLR gramatika buvo pasiskolinta iš „Presto“).

„Spark SQL“ yra paskirstytas atminties skaičiavimo variklis, turintis SQL sluoksnį struktūrizuotų ir pusiau struktūruotų duomenų rinkinių viršuje. Jis palaiko užklausas, aprašytas ANSI SQL, „Hive QL“ ir savo užklausą DSL (naudojant duomenų rinkinio API).

Kaip ir daugelis SQL ir NoSQL duomenų bazių, „Spark SQL“ siūlo našumo užklausų optimizavimą, naudojant „Catalyst Logical Query Plan Optimizer“, kodo generavimą (kuris dažnai yra geresnis už jūsų pasirinktinį kodą!) Ir volframo vykdymo variklį su savo vidiniu dvejetainiu eilučių formatu.