Spark SQL, Spark Streaming. Jan Hučín

Podobné dokumenty
Spark SQL, Spark Streaming. Jan Hučín

Spark Jan Hučín 5. dubna 2017

B0M33BDT Technologie pro velká data. Supercvičení SQL, Python, Linux

Spark Jan Hučín 15. listopadu 2017

Obsah. Předmluva 13. O autorovi 15. Poděkování 16. O odborných korektorech 17. Úvod 19

Ukládání a vyhledávání XML dat

Úvod do databázových systémů 3. cvičení

ZÍSKÁVÁNÍ ZNALOSTÍ Z DATABÁZÍ

Hadoop, Hive a Spark: Využití pro data mining. Václav Zeman, KIZI VŠE

Operátory ROLLUP a CUBE

Úvod do databázových systémů

Přizpůsobení JSTL pro Google App Engine Datastore

DATA CUBE. Mgr. Jiří Helmich

B0M33BDT Stream processing. Milan Kratochvíl

Experimentální systém pro WEB IR

KIV/ZIS cvičení 5. Tomáš Potužák

Informační systémy 2008/2009. Radim Farana. Obsah. Dotazy přes více tabulek

ZÍSKÁVÁNÍ ZNALOSTÍ Z DATABÁZÍ

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Úvod 9

Maturitní otázky z předmětu PROGRAMOVÁNÍ

MBI - technologická realizace modelu

PRG036 Technologie XML

Architektury databázových

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

Úvod do databázových systémů

Analýza a modelování dat. Přednáška 8

Databázové systémy. Doc.Ing.Miloš Koch,CSc.

Úvod do databázových systémů

Oracle XML DB. Tomáš Nykodým

SQL - trigger, Databázové modelování

TimescaleDB. Pavel Stěhule 2018

Příprava dat v softwaru Statistica

Databáze SQL SELECT. David Hoksza

DETEKCE ANOMÁLNÍHO CHOVÁNÍ UŽIVATELŮ KATASTRÁLNÍCH MAPOVÝCH SLUŽEB

KIV/ZIS - SELECT, opakování

Marketingová komunikace. 2. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK1aPH/N9KMK1bPH (um1a1ph/um1b1ph)

Informační systémy ve zdravotnictví. 6. cvičení

MATURITNÍ OTÁZKY ELEKTROTECHNIKA - POČÍTAČOVÉ SYSTÉMY 2003/2004 PROGRAMOVÉ VYBAVENÍ POČÍTAČŮ

SQL a XML jako alternativa ke klasickým unixovým nástrojům

Analýza a modelování dat. Přednáška 9

Kurz Databáze. Obsah. Dotazy. Zpracování dat. Doc. Ing. Radim Farana, CSc.

XMW4 / IW4 Pokročilé SELECT dotazy. Štefan Pataky

1 Webový server, instalace PHP a MySQL 13

Jazyk SQL 1. Michal Valenta. Katedra softwarového inženýrství FIT České vysoké učení technické v Praze c Michal Valenta, 2012 BI-DBS, ZS 2011/12

A4M33BDT Technologie pro velká data

B0M33BDT Technologie pro velká data. Storage

Databázové systémy Cvičení 5.2

B0M33BDT 7. přednáška Architektury a bezpečnost. Marek Sušický Milan Kratochvíl

Stručný obsah. K2118.indd :15:27

Inovace a zkvalitnění výuky prostřednictvím ICT Databázové systémy MySQL základní pojmy, motivace Ing. Kotásek Jaroslav

Databázové a informační systémy

O Apache Derby detailněji. Hynek Mlnařík

Obsah. Kapitola 1. Kapitola 2. Kapitola 3. Kapitola 4. Úvod 11. Stručný úvod do relačních databází 13. Platforma 10g 23

Materializované pohledy

Systémy řízení proudů dat

WWW dotazovací služby pro prostorová data URM. Jiří Čtyroký Útvar rozvoje hl. m. Prahy

Integrace relačních a grafových databází funkcionálně

ÚVOD DO DATABÁZÍ. Metodické listy pro předmět

Databázové systémy. Datová integrita + základy relační algebry. 4.přednáška

SQL tříhodnotová logika

Databáze. Velmi stručný a zjednodušený úvod do problematiky databází pro programátory v Pythonu. Bedřich Košata

Obsah Úvod Kapitola 1 Než začneme Kapitola 2 Práce s hromadnými daty před analýzou

Dotazovací jazyky I. Datová krychle. Soběslav Benda

Maturitní témata Školní rok: 2015/2016

Marketingová komunikace. 3. soustředění. Mgr. Pavel Vávra Kombinované studium Skupina N9KMK3PH (vm3bph)

Michal Krátký, Miroslav Beneš

Databázové systémy. Cvičení 6: SQL

FRED & PostgreSQL. CZ.NIC, z.s.p.o. Jaromír Talíř <jaromir.talir@nic.cz>

Marketingová komunikace. 2. a 3. soustředění. Mgr. Pavel Vávra 9103@mail.vsfs.cz. Kombinované studium Skupina N9KMK3PH (vm3aph)

Relační DB struktury sloužící k optimalizaci dotazů - indexy, clustery, indexem organizované tabulky

SQL SQL-SELECT. Informační a znalostní systémy. Informační a znalostní systémy SQL- SELECT

Inovace a zkvalitnění výuky prostřednictvím ICT. Základní seznámení s MySQL Ing. Kotásek Jaroslav

PG 9.5 novinky ve vývoji aplikací

DJ2 rekurze v SQL. slajdy k přednášce NDBI001. Jaroslav Pokorný

Informační systémy ve zdravotnictví. 10. cvičení

Úvod do databází. Modelování v řízení. Ing. Petr Kalčev

Co bude výsledkem mého SELECTu? RNDr. David Gešvindr MVP: Data Platform MCSE: Data Platform MCSD: Windows Store MCT

Oborové číslo Hodnocení - část A Hodnocení - část B Hodnocení - část A+B

xrays optimalizační nástroj

Technické informace. PA152,Implementace databázových systémů 4 / 25. Projekty. pary/pa152/ Pavel Rychlý

Katedra kybernetiky laboratoř Inteligentní Datové Analýzy (IDA) Katedra počítačů, Computational Intelligence Group

8.2 Používání a tvorba databází

Dotazování nad stromem abstraktní syntaxe

A5M33IZS Informační a znalostní systémy. O čem předmět bude? Úvod do problematiky databázových systémů

5. blok Souhrnné a skupinové dotazy

Platforma.NET 11.NET Framework 11 Visual Basic.NET Základní principy a syntaxe 13

Algoritmy a struktury neuropočítačů ASN P9 SVM Support vector machines Support vector networks (Algoritmus podpůrných vektorů)

Klinický informační systém Porodní kniha - případová studie -

Základní přehled SQL příkazů

Návrh a tvorba WWW stránek 1/14. PHP a databáze

Vybraná zajímavá Lotus Notes řešení použitelná i ve vašich aplikacích. David Marko TCL DigiTrade

KIV/ZIS - SQL dotazy. stáhnout soubor ZIS- 04_TestovaciDatabaze accdb. SQL dotazy. budeme probírat pouze SELECT

Základy informatiky. 08 Databázové systémy. Daniela Szturcová

Algoritmizace řazení Bubble Sort

IB111 Úvod do programování skrze Python

QAD Business Intelligence

Softwarový proces. Bohumír Zoubek, Tomáš Krátký

6. blok část C Množinové operátory

Zpracování dat v AVG backendech. Antonín Karásek Jarek Jarcec Čecho

Úvod do databázových systémů

Transkript:

Spark SQL, Spark Streaming Jan Hučín 22. listopadu 2017

Osnova 1. Spark SQL 2. Další rozšíření Sparku Spark streaming GraphX Spark ML 2

Spark SQL

Spark SQL a DataFrames (DataSets) Rozšíření k tradičnímu RDD přístupu Datová struktura DataFrame = RDD se sloupci obdoba databázové relační tabulky obsahuje i schéma nad rámec RDD práce se sloupci možnost použití syntaxe podobné SQL nebo přímo SQL 1;Andrea;35;64.3;Praha 2;Martin;43;87.1;Ostrava 3;Simona;18;57.8;Brno id jmeno vek hmotnost mesto 1 Andrea 35 64.3 Praha 2 Martin 42 87.1 Ostrava 3 Simona 18 57.8 Brno 4

Spark SQL výhody a nároky Výhody oproti tradičnímu Sparku (RDD): stručnější a jednodušší kód využití Hive snazší optimalizace rychlejší běh Nároky navíc: rozšířené API: objekt sqlcontext, ev. další Kdy nelze použít? úlohy nevhodné pro SQL tradiční Spark úlohy náročné na paměť map-reduce, Hive 5

Příklad společné zadání Který stát USA má na meteostanicích nejvyšší průměrný normál v létě? (již jsme řešili pomocí Hive) Struktura dat: stanice,mesic,den,hodina,teplota,flag,latitude,longitude,vyska,stat,nazev AQW00061705,1,1,1,804,P,-14.3306,-170.7136,3.7,AS,PAGO PAGO WSO AP AQW00061705,1,2,1,804,P,-14.3306,-170.7136,3.7,AS,PAGO PAGO WSO AP AQW00061705,1,3,1,803,P,-14.3306,-170.7136,3.7,AS,PAGO PAGO WSO AP AQW00061705,1,4,1,802,P,-14.3306,-170.7136,3.7,AS,PAGO PAGO WSO AP AQW00061705,1,5,1,802,P,-14.3306,-170.7136,3.7,AS,PAGO PAGO WSO AP 6

Postup 0 (tradiční RDD) tp_raw = sc.textfile('/user/pascepet/teplota-usa') tp_raw = tp_raw.filter(lambda r: (r.split(',')[1] in set('678')) & (r.split(',')[4]!= '') tp = tp_raw.map(uprav_radek) tp_st = tp.reducebykey(soucty) \.map(lambda x: (x[0], x[1][0]/x[1][1])) \.sortby(lambda y: y[1], False) tp_st.take(1) uprav_radek AQW00061705,7,30,4,804,P,-14.3306,-170.7136,3.7,AS,PAGO PAGO WSO AP (AS, (26.89, 1)) 7

Jak vyrobit DataFrame? konverze existujícího RDD převoditelné do sloupců načtení souboru s již definovanými sloupci (např. Parquet, ORC) převoditelné do sloupců (např. CSV) výsledek dotazu do Hive výsledek dotazu do jiné DB (JDBC konektor) 8

Jak vyrobit DataFrame? konverze existujícího RDD sqlcontext.createdataframe(rdd, schema) načtení souboru sqlcontext.read.format(formát).load(cesta) výsledek dotazu do Hive sqlcontext.sql(dotaz_sql) 9

Postup 1 (CSV RDD DataFrame) from pyspark.sql.types import * tp_raw = sc.textfile('/user/pascepet/teplota-usa') tp_raw = tp_raw.filter(lambda r: (r.split(',')[1] in set('678')) & (r.split(',')[4]!= '') tp_prep = tp_raw.map(uprav_radek_df) tpdf = sqlcontext.createdataframe(tp_prep, tp_schema) uprav_radek_df AQW00061705,7,30,4,804,P,-14.3306,-170.7136,3.7,AS,PAGO PAGO WSO AP (AS, 26.89) tp_pole = [StructField('stat', StringType(), True), StructField('tepl', DoubleType(), True)] tp_schema = StructType(tp_pole) 10

Postup 2 (přímé načtení CSV DataFrame) tpdf2 = sqlcontext.read \.format("com.databricks.spark.csv") \.option("header", "true") \.option("delimiter", ",") \.option("inferschema", "true") \.load("/user/pascepet/teplota-usa") Postup 3 (Hive DataFrame) tpdf3 = sqlcontext.sql('select * from sstamenov.pocasi') 11

Jak pracovat s DataFrame? 1. registrovat jako dočasnou tabulku + dotazování SQL 2. pseudo-sql operace 3. operace RDD výsledek může být jen obyčejné RDD 12

Jak pracovat s DataFrame? 1. registrovat jako dočasnou tabulku + dotazování SQL DF.registerTempTable("tabulka") sqlcontext.sql("select * from tabulka") 2. pseudo-sql operace DF.operace, např. select, filter, join, groupby, sort... 3. operace RDD výsledek může být jen obyčejné RDD např. map, flatmap... řádek v DataFrame je typu Row práce jako s typem list 13

Pseudo-SQL a další operace select (omezení na uvedené sloupce) filter (omezení řádků podle podmínky) join (připojení jiného DataFrame) groupby (seskupení) agg, avg, count (agregační funkce) todf (přejmenování sloupců) withcolumn (transformace sloupců) show (hezčí výpis obsahu DataFrame) 14

Registrace dočasné tabulky tpdf.registertemptable("teploty") tp_stdf = sqlcontext.sql("""select stat, avg(tepl) as tepl_prum from teploty group by stat order by tepl_prum desc""") tp_stdf.show(1) tp_pole = [StructField('stat', StringType(), True), StructField('tepl', DoubleType(), True), StructField('mesic', DoubleType(), True)] tp_schema = StructType(tp_pole) 15

Pseudo-SQL tpdf2 = tpdf2.filter((tpdf2.mesic>5) & (tpdf2.mesic<9)) \.select('stat','tepl').na.drop() tpdf2 = tpdf2.withcolumn('tepl', (tpdf2.tepl/10.0-32) * 5/9) tpdf2 = tpdf2.groupby('stat').avg() \.todf('stat','prum') tpdf2.sort(tpdf2.prum.desc()).limit(1).show() 16

Spark Streaming

Co to je a jak to využít dávkové zpracování přicházejících dat příchozí data neklepou na dveře, sedí v čekárně near real-time, pevné nastavení časového okna Možné využití: filtrování logů, zpráv monitorování, reakce na událost vyhledávání v nakešovaných datech 18

Princip zpracování streamovací modul dávkuje příchozí data posloupnost RDD klasický Spark postupně odbavuje RDD ve frontě API pro Javu, Scalu, s malým omezením i Python 19

Příklad Úkol: pro každou dávku ze socketu spočítat četnosti slov sc = SparkContext(appName="Priklad") ssc = StreamingContext(sc, 10) lines = ssc.sockettextstream(sys.argv[1], int(sys.argv[2])) counts = lines.flatmap(lambda line: line.split(" ")) \.map(lambda word: (word, 1)) \.reducebykey(lambda a, b: a+b) counts.pprint() ssc.start() ssc.awaittermination() 20

GraphX Spark ML

GraphX rozšíření pro algoritmy prohledávající grafy ve stadiu vývoje připravené algoritmy: PageRank rozklad na podgrafy počet trojúhelníků label propagation a další... API pro iterativní procházení grafů (Pregel) 22

Spark ML (machine learning) klasické algoritmy machine learning, např.: regrese, lineární modely rozhodovací stromy naivní Bayesův klasifikátor shluková analýza algoritmy pro velká data, např.: doporučovací systém asociační pravidla, časté podmnožiny statistické metody, např.: popisná statistika testování hypotéz mnohorozměrné metody, např.: hlavní komponenty faktorová analýza 23

Spark ML (machine learning) praktický smysl mají jen algoritmy pro velká data u ostatních metod: z velkých dat se vybere vzorek na vzorku se tradičními nástroji modeluje navržený model se naprogramuje ve Sparku (bez Spark ML) 24

Díky za pozornost Profinit, s.r.o. Tychonova 2, 160 00 Praha 6 Telefon + 420 224 316 016 Web www.profinit.eu LinkedIn linkedin.com/company/profinit Twitter twitter.com/profinit_eu