ECL (programovací jazyk zaměřený na data) - ECL (data-centric programming language)
Paradigma | deklarativní, strukturovaný, datově orientovaný |
---|---|
Vývojář | HPCC Systems® „LexisNexis Risk Solutions |
Poprvé se objevil | 2000 |
Psací disciplína | statický, silný, bezpečný |
OS | GNU /Linux |
webová stránka | http://hpccsystems.com/ |
Ovlivněno | |
Prolog, Pascal, SQL, Snobol4, C ++, Clarione |
ECL je deklarativní, datově orientovaný programovací jazyk navržený v roce 2000, aby umožnil týmu programátorů zpracovávat velká data napříč vysoce výkonným výpočetním klastrem, aniž by se programátor podílel na mnoha naléhavých rozhodnutích.[1][2]
Dějiny
ECL původně navrhl a vyvinul v roce 2000 David Bayliss jako nástroj vlastní produktivity v rámci Seisint Inc. a byla považována za „tajnou zbraň“, která umožňovala společnosti Seisint získat podíl na trhu ve svém datovém podnikání. Společnost Equifax měla proces předvídání, kdo v příštích 30 dnech zbankrotuje, založený na SQL, ale spuštění dat trvalo 26 dní. První implementace ECL vyřešila stejný problém za 6 minut. Tato technologie byla uváděna jako hybná síla za akvizicí společnosti Seisint společností LexisNexis a poté znovu jako hlavní zdroj synergií, když LexisNexis získala společnost ChoicePoint Inc.[3]
Jazykové konstrukce
ECL, alespoň ve své nejčistší podobě, je deklarativní jazyk zaměřený na data. Programy v nejpřísnějším smyslu neexistují. Spíše aplikace ECL určí řadu základních datových sad (nebo datových hodnot) a poté operace, které mají být s těmito hodnotami provedeny.
Ahoj světe
ECL má mít stručné řešení problémů a rozumných výchozích hodnot. Program „Hello World“ je charakteristicky krátký:
'Ahoj světe'
Možná chutnější příklad by vzal seznam řetězců, roztřídil je do pořadí a místo toho by to vrátil jako výsledek.
// Nejprve deklarujte datovou sadu s jedním sloupcem obsahujícím seznam řetězců// Datové sady mohou být také binární, CSV, XML nebo externě definované strukturyD := DATASET([{'ECL'},{„Deklarativní“},{'Data'},{'Centrický'},{'Programování'},{'Jazyk'}],{TĚTIVA Hodnota;});SD := TŘÍDIT(D,Hodnota);výstup(SD)
Příkazy obsahující a :=
jsou definovány v ECL jako definice atributů. Neoznačují akci; spíše definice pojmu. Logicky lze tedy program ECL číst: „zdola nahoru“
VÝSTUP (SD)
Co je SD?
SD := TŘÍDIT(D,Hodnota);
SD je D, které bylo tříděno podle „hodnoty“
Co je to D?
D := DATASET([{'ECL'},{„Deklarativní“},{'Data'},{'Centrický'},{'Programování'},{'Jazyk'}],{TĚTIVA Hodnota;});
D je datová sada s jedním sloupcem označeným „Hodnota“ a obsahujícím následující seznam údajů.
ECL primitiva
Mezi ECL primitiva, která působí na datové sady, patří SORT, ROLLUP, DEDUP, ITERATE, PROJECT, JOIN, NORMALIZE, DENORMALIZE, PARSE, CHOSEN, ENTH, TOPN, DISTRIBUTE
ECL zapouzdření
Zatímco ECL je strohý a LexisNexis tvrdí, že 1 řádek ECL je zhruba ekvivalentní 120 řádkům C ++, stále má významnou podporu pro programování ve velkém měřítku, včetně zapouzdření dat a opětovného použití kódu. Dostupné konstrukce zahrnují MODUL, FUNKCE, FUNCTIONMACRO, ROZHRANÍ, MAKRO, VÝVOZ, SDÍLENÉ
Podpora paralelismu v ECL
V HPCC implementace, ve výchozím nastavení se většina konstrukcí ECL provede paralelně napříč používaným hardwarem. Mnoho z primitiv má také LOCAL možnost specifikovat, že operace má probíhat lokálně v každém uzlu.
Srovnání s mapou
Paradigma Hadoop Map-Reduce sestává ze tří fází, které korelují s ECL primitivy následovně.
Název / termín Hadoop | Ekvivalent ECL | Komentáře |
---|---|---|
MAPOVÁNÍ v rámci MAPper | PROJEKT / TRANSFORMA | Pořídí záznam a převede do jiného formátu; v Hadoop v případě, že jde o převod na pár klíč – hodnota |
SHUFFLE (Fáze 1) | DISTRIBUTE (, HASH (KeyValue)) | Záznamy z mapovače jsou distribuovány v závislosti na hodnotě KEY |
SHUFFLE (Fáze 2) | TŘÍDIT (, MÍSTNÍ) | Záznamy, které přicházejí k určitému reduktoru, jsou seřazeny podle KLÍČOVÉHO pořadí |
SNÍŽIT | ROLLUP (, klíč, LOKÁLNÍ) | Záznamy pro konkrétní hodnotu KEY jsou nyní kombinovány |
Reference
- ^ Průvodce po ECL, Lexis-Nexis.
- ^ „Hodnocení využití systémů toku dat pro analýzu velkých grafů,“ A. Yoo a I. Kaplan. Proceedings of the 2nd Workshop on Many-Task Computing on Grids and Supercomputers, MTAGS, 2009
- ^ „Acquisition of Seisint“. Archivovány od originál dne 21.06.2011. Citováno 2011-03-24.