Pig Cosa è Pig? Pig è una piattaforma per l'analisi e l'elaborazione parallela di grandi quantità di dati.

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Pig Cosa è Pig? Pig è una piattaforma per l'analisi e l'elaborazione parallela di grandi quantità di dati."

Transcript

1 PIG Pig

2 Pig Cosa è Pig? Pig è una piattaforma per l'analisi e l'elaborazione parallela di grandi quantità di dati. Gli elementi principali di questa piattaforma sono un linguaggio di alto livello Pig Latin un compilatore/interprete che traduce gli scripts in sequenze di Job MapReduce un'infrastruttura per l'esecuzione e la gestione dei Job una shell per l'esecuzione interattiva di comandi Pig Latin E' pratica comune identificare Pig con il linguaggio Pig-Latin.

3 Pig Pig-Latin: un dataflow language Il linguaggio Pig-Latin è stato sviluppato per consentire allo sviluppatore di ragionare ad alto livello e liberarlo dall'onere di convertire il codice in termini di MapReduce. Pig-Latin è un linguaggio di scripting ad alto livello orientato al dataflow programming, in cui tutta l'attenzione è posta sui dati, visti come un flusso di informazioni che attraversando un circuito di istruzioni viene trasformato e modellato, in maniera simile a quanto accade alla musica che attraversa i circuiti di un impianto Hi-Fi prima di esser riprodotta in alta qualità. Questo approccio è diametralmente opposto a quello tradizionale, in cui si progetta il software come un flusso di istruzioni che elabora e processa dei dati esterni.

4 Pig Pig-Latin: un dataflow language Pig-Latin si ispira ai linguaggi funzionali e come tale cerca di esprimere le trasformazioni da eseguire sui dati ma senza dettagliare il come eseguirle Le trasformazioni sono espresse mediante operatori ispirati all'sql join, sort, filter, group by e uno script assume la forma di un dataflow graph in cui ogni trasformazione viene eseguita nel momento in cui viene raggiunta dal flusso di dati, in contrasto con il modello tradizionale in cui ogni operazione viene eseguita non appena il program counter la raggiunge.

5 Pig Pig-Latin: un dataflow language Questo flusso di trasformazione viene automaticamente tradotto dal compilatore in un insieme di job MapReduce ed eseguito in parallelo su un cluster. Alcune operazioni possono facilmente essere espresse in termini di MapReduce [group by order by ] == shuffle + reduce [ filter select ] map per altre, come ad esempio il join, la traduzione non è così immediata. Tuttavia Pig offre delle implementazioni in grado di garantire performance quasi ottimali anche in presenza di dati fortemente sbilanciati (skewed).

6 Pig Perché Pig? Perché è stato realizzato Pig? Perché può essere conveniente utilizzarlo? Il modello di programmazione MapReduce prevede tre step di elaborazione fortemente correlati: { map, shuffle-sort, reduce } ed apprendere l'arte di convertire gli algoritmi noti secondo questo paradigma non è semplice; Spesso è necessario ideare dei percorsi complessi anche per ottenere gli equivalenti MapReduce di operazioni considerate semplici; Questo rende MapReduce costoso sia in termini di sviluppo che di manutenzione ed eventuali riutilizzo del codice; Ottimizzare il codice MapReduce può diventare un'arte per pochi eletti; Pig cerca di porre rimedio a queste difficoltà, ponendosi come un linguaggio semplice ed utilizzabile anche da persone non-hacker ma esperte sui dati.

7 Pig Dove si posiziona nel panorama BigData? Un tipico dataflow processing associato a sistemi BigData. Dove si posiziona Pig?

8 Pig Dove si posiziona nel panorama BigData? raccolta : in questa fase Pig viene utilizzato come interfaccia verso i dati acquisiti da sorgenti diverse, sia batch che real-time o near real-time; esplorazione : Pig si rivela molto utile nella gestione di dati eterogenei e ancora grezzi, viene usato per preparare filtrare i dati spuri, creare dei metadati che aiutino a capire il contenuto ed il valore dei dati stessi, categorizzarli, classificarli e prepararli per l'integrazione con sistemi di warehouse e analytics; elaborazione : Pig viene spesso utilizzato per preparare i dati all'integrazione con altri sistemi, uniformandoli secondo schemi e/o knowledge-bases preesistenti e iniziando la trasformazione da non-strutturati a strutturati;

9 Pig Extract Transform Load (ETL) I maiali sono onnivori e digeriscono di tutto. Pig è stato progettato per lavorare bene anche con dati sporchi e non normalizzati, in cui gli schemi non sono noti o sono inconsistenti. Per tale ragione le operazioni tipiche svolte con Pig sono quelle di verifica della consistenza e della qualità dei dati e della loro preparazione per sistemi che si aspettando dati strutturati o semi-strutturati. Queste operazioni vengono sintetizzate con l'acronimo ETL (extract transform load)

10 Pig Interagire con Pig Pig prevede due modalità di esecuzione: interattiva : attraverso una shell dedicata, per l'esplorazione dei file e la progettazione degli script; batch : per l'esecuzione in produzione degli script; entrambe queste modalità possono essere eseguite in modalità local, per fare dei semplici esperimenti con piccoli file eseguendo i job sulla macchina locale, e mapreduce per utilizzare un cluster.

11 Pig Grunt : la shell La shell di Pig si chiama grunt, come ci ricorda il suo prompt: grunt> Grunt offre alcune funzionalità di una shell tradizionale (ma non tutte): tab-completion sui comandi (non sui file ) command history semplice supporto all'editing Non fornisce invece pipes redirezione I/O esecuzione in background Per uscire dalla shell è sufficiente dare il comando quit o digitare CTRL+D

12 Pig Grunt : la shell Pig lavora nativamente con l'hdfs, per questo Grunt consente di interagire direttamente con esso attraverso il comando fs, le cui opzioni sono le stesse offerte dal comando hadoop fs : mkdir cp du ls cat rm copyfromlocal in questo modo risulta molto semplice interagire con l'hdfs direttamente dalla shell o all'interno degli script.

13 Pig Grunt : la shell L'utilizzo più naturale di Grunt è l'inserimento interattivo di comandi Pig Latin. Questa modalità può essere utile per esplorare un nuovo dataset scrivere il prototipo di un nuovo script sperimentare diverse pipeline alla ricerca di ottimizzazioni Per migliorare l'interattività Pig esegue le elaborazioni solo in seguito ad un comando che prevede la generazione di un output (es. dump o store ). In questo modo è possibile inserire i diversi comandi che compongono lo script senza dover attendere l'elaborazione parziale dei dati e lanciare l'esecuzione dello script attraverso la generazione dei risultati finali.

14 Pig Grunt : la shell Grunt offre inoltre alcune semplici funzioni di controllo per l'esecuzione del codice, attraverso i tre comandi kill jobid: consente di terminare un particolare job exec script: consente di eseguire uno script run script: consente di eseguire uno script Gli ultimi due si differenziano per il fatto che il comando exec esegue lo script esternamente alla shell e mostra solo il risultato finale; il comando run esegue lo script internamente alla shell, come se i comandi fossero digitati in modalità interattiva e dunque al termine dell'esecuzione risulteranno disponibili anche tutti i dati intermedi generati durante l'esecuzione.

15 Pig Strumenti di sviluppo La shell Grunt è un ottimo strumento per esplorare un nuovo dataset e sperimentare vari prototipi per un nuovo script, tuttavia non è molto adatta allo sviluppo ed alla manutenzione degli script. Per questo è dunque conveniente utilizzare dei comuni editor di testo. Esistono tuttavia dei plugin per alcuni dei principali editor (es. Vim, TextMate, Emacs, Eclipse) che forniscono funzionalità quali syntax-higlighting, auto completamento e in alcuni casi integrazione con il framework hadoop per l'esecuzione degli script dall'interno dell'ambiente di sviluppo.

16 Pig Strumenti di sviluppo Durante la parte pratica utilizzeremo un plugin che consente di scrivere e lanciare gli script Pig direttamente da browser.

17 Introduzione al Linguaggio

18 Introduzione al linguaggio Si è detto che è un dataflow language simile ad un linguaggio funzionale. Questo significa che non si dovrà pensare in termini di istruzioni su come eseguire le elaborazioni ma si dovrà organizzare il codice in termini di espressioni che indicano quali elaborazioni eseguire E' importante ricordare che ad una espressione è sempre associato un valore (e dunque un tipo). In Pig-Latin ogni espressione rappresenta un dataset o relazione, ed è concettualmente equivalente ad una tabella SQL contenente tanti record, ognuno dei quali suddiviso in un numero arbitrario di campi o colonne.

19 Introduzione al linguaggio Data l'espressione input = load 'data' input è il nome dell'espressione ottenuta dal caricamento del dataset 'data'. Il nome della relazione è anche detto alias, ma a discapito delle apparenze un alias non è una variabile in quanto l'assegnamento è definitivo. Sebbene sia possibile riutilizzare un alias, questo equivale alla cancellazione della vecchia relazione ad alla creazione di una nuova relazione, con conseguenti ambiguità nell'interpretazione di uno script. E' dunque sconsigliato riutilizzare gli alias, in quanto potenziale fonte di errori. Le keywords di Pig non sono case-sensitive (es load == LOAD), mentre tutto il resto lo è, quindi è bene considerarlo un linguaggio case-sensitive.

20 Introduzione al linguaggio Anche i campi (colonne) delle relazioni hanno dei nomi; questi assomigliano di più a delle variabili perché possono assumere valori diversi in base al record corrente. Tuttavia si distinguono dalle variabili in quanto non è possibile assegnare un valore ad un campo di un singolo record. Tutti i nomi devono iniziare con un carattere alfabetico, seguito da una sequenza arbitraria di caratteri (ASCII), numeri o '_' (underscore). In Pig Latin esistono due tipologie di commento quello multilinea di Java /* */ (eventualmente anche su riga singola) quello su riga singola in stile SQL '--' (doppio meno)

21 Il modello dati Come tutti i linguaggi anche Pig-Latin ha un suo modello dati con cui rappresentare le informazioni su cui deve operare. I tipi supportati si possono suddividere in due categorie: scalari e complessi. I tipi scalari sono gli equivalenti di alcuni tipi nativi in Java { int, long, float, double } chararray String bytearray byte[] (in Java), Blob (in SQL) null null in SQL I tipi complessi sono tre: map, tuple, bag e richiedono una descrizione più dettagliata.

22 Il tipo Map Il tipo map modella un'associazione tra due elementi una chiave (chararray) utilizzata per l'indicizzare il contenuto della collezione un valore (di tipo qualunque, scalare o complesso) utilizzato per contenere i singoli dati Può essere descritto da un'espressione letterale racchiusa tra parentesi quadre ['name' # 'bob', 'age' # 25] Se non viene specificato un tipo, per default Pig assegna al valore il tipo bytearray. A differenza degli equivalenti per altri linguaggi come Java o C++, valori corrispondenti a chiavi diverse possono avere tipi diversi.

23 Il tipo Tuple Una tupla è una sequenza ordinata di dimensione fissata di elementi, detti campi, ed è rappresentata da un'espressione letterale racchiusa tra parentesi tonde ( 'bob', 55 ) E' equivalente ad una riga SQL in cui i campi corrispondono alle colonne di una tabella e possono contenere uno qualunque dei tipi supportati da Pig e ogni campo può essere di tipo diverso. E' possibile accedere ai campi per nome o per posizione tramite l'espressione $N dove N è la posizione del campo nella tupla. E' possibile associare ad una tupla uno schema che definisce il nome ed il tipo di ogni campo.

24 Il tipo Bag Un bag è una collezione non ordinata di tuple, e può essere descritto da un'espressione letterale racchiusa tra parentesi graffe { ('bob', 55), ('sally', 52), ('john', 25) } E' la più generale delle collezioni supportate in Pig e può salvare parte dei suoi dati su file in maniera automatica, mentre gli altri tipi complessi (map e tuple) devono necessariamente essere contenuti in RAM. Può avere uno schema associato che descrive le tuple al suo interno. Tuttavia essendo un insieme non-ordinato non è possibile accedere ai campi per posizione.

25 Schemi La filosofia di Pig è quella di mangiare di tutto dunque anche se una relazione non ha uno schema associato Pig cercherà di fare del suo meglio per stimare la tipologia di dati in base alle operazioni richieste nello script. Tuttavia, quando possibile, è bene definire lo schema perché aiuta Pig nel controllo degli errori e può aumentare le performance. Gli schemi possono essere ricorsivi. Il modo più semplice per comunicare a Pig uno schema è definirlo esplicitamente al caricamento dei dati dividends = load 'NYSE_dividends' as (exchange: chararray, symbol: chararray, date:chararray, dividend: float);

26 Schemi Se si definisce uno schema Pig cercherà di adattare i dati allo schema fornito attraverso dei cast inserendo dei null se mancano i dati scartando eventuali campi in eccesso Se nella definizione dello schema si omettono i tipi dei dati dividends = load 'NYSE_dividends' as (exchange, symbol, date, dividend); Pig assegnerà a ciascun campo il tipo più generico, bytearray, e successivamente cercherà di stimare il tipo più adatto in base all'uso che ne verrà fatto all'interno dello script.

27 Definizione di uno schema Per specificare lo schema di una relazione si deve usare la seguente sintassi Tipo Sintassi Esempio int int as ( a: int ) long long as ( a: long ) map map[ ] o map[tipo] as ( a: map[ ], b: map[int] ) tuple tuple() o tuple( lista di campi) as ( a: tuple(), b: tuple(x: int, y: int ) ) bag bag {} o bag{ t: (lista di campi ) } as ( a: bag{}, b: bag{ t: ( x:int, t:int) }

28 Definizione di uno schema Nel caso relazioni utilizzate spesso, magari in più script, e con schemi complessi specificare ogni volta lo schema può essere scomodo e fonte di errori. In tal caso è possibile utilizzare per la memorizzazione dei dati su disco formati che conservino al loro interno lo schema oppure sistemi dedicati alla gestione degli schemi come HCatalog dividends = load 'NYSE_dividends' using HCatLoader(); In generale è bene non mescolare le due modalità.

29 Deduzione di uno schema Vediamo ora come Pig cerchi di dedurre lo schema di una relazione. daily = load 'NYSE_daily'; calcs = foreach daily generate $7/1000, $3*100.0, SUBSTRING($0, 0,1), $3 - $6; Pur non essendo stato fornito uno schema Pig può assumere che $7 sia un intero perché diviso per un intero $3 sia un double perché moltiplicato per un double $0 sia un chararray perché si estrae una sottostringa $6 sia un numero perché utilizzato in una sottrazione. Tuttavia non sapendo se si tratta di un intero o di un double Pig sceglie l'ipotesi più prudente e assume sia un double

30 Cast Il cast in Pig è analogo a quello in Java e segue la stessa sintassi daily = load 'NYSE_daily'; calcs = foreach daily generate (int)$7 /1000, (double)$3 * 100.0, (chararray)substring($0, 0,1), (double)$6 (double)$3; e segue (quasi) le stesse regole: è possibile eseguire un cast automatico dal tipo più piccolo a quello più grande il cast inverso grande piccolo deve essere esplicito e può causare troncamenti si può fare il cast da chararray a un tipo numerico ma se la stringa non ha un formato corretto il risultato sarà un null

31 Supporto allo sviluppo

32 Supporto allo sviluppo Pig-Latin include un set di comandi pensati per aiutare lo sviluppatore nell'esplorazione dei dati e nello sviluppo degli script describe descrive lo schema associato ad una relazione illustrate mostra alcuni record rappresentativi del dataset per aiutare lo sviluppatore a capirne il formato e la struttura del dataset stesso sample campiona il dataset creandone una versione di dimensione ridotta limit selezione i primi N record di un dataset explain mostra come il compilatore compilerà ed eseguirà lo script in termini di mapreduce

33 describe describe mostra lo schema associato ad una relazione e può essere molto utile nell'apprendimento di Pig-Latin e nello sviluppo degli script. In uno script possono esserci più comandi describe. divs = load 'NYSE_dividends' as (exchange:chararray, symbol:chararray, date:chararray, dividends:float); trimmed = foreach divs generate symbol, dividends; grpd = group trimmed by symbol; avgdiv = foreach grpd generate group, AVG(trimmed.dividends); describe trimmed; describe grpd; describe avgdiv; trimmed: {symbol: chararray, dividends: float} grpd: {group: chararray, trimmed: {(symbol: chararray, dividends: float)}} avgdiv: {group: chararray, double}

34 sample / limit Spesso uno dei modi migliori per testare uno script è quello di lanciarlo sui nostri dati e verificare che i risultati prodotti siano conformi alle attese. Ma operando su BigData questo può richiedere parecchio tempo, per cui è utile avere dei meccanismi per ridurre le dimensioni dei dataset. L'operatore sample consente di selezionare una percentuale di record scelta a caso dal nostro dataset. L'operatore limit invece consente di specificare il numero di record di una relazione da selezionare.

35 sample / limit --sample.pig divs = load 'NYSE_dividends'; some = sample divs 0.1; some conterrà circa il 10% dei record presenti in divs. --limit.pig divs = load 'NYSE_dividends'; first10 = limit divs 10; first10 conterrà i primi 10 record presenti in divs.

36 illustrate Non sempre un semplice campionamento è in grado di cogliere tutti gli aspetti di un dataset. Ad esempio se lo script esegue un join è necessario assicurarsi che esistano dei record con la stessa chiave altrimenti il join restituirà una relazione vuota. L'operatore illustrate serve ad evidenziare il dataflow assicurando di selezionare dei record che arrivino al termine della trasformazione. Per farlo inizia con un sample dei dati ed esegue su di essi lo script assicurandosi tuttavia che ogniqualvolta viene incontrato un operatore che scarta dei risultati (filter, join, ) almeno qualche record superi il filtro. Se tra quelli campionati non ne trova nessuno, ne costruisce uno simile, cioè che rispetti lo schema e che abbia delle caratteristiche tali da fargli superare il filtro.

37 illustrate divs = load 'NYSE_dividends' as (e:chararray, s:chararray, d:chararray, div:float); recent = filter divs by d > ' '; trimmd = foreach recent generate s, div; grpd = group trimmd by s; avgdiv = foreach grpd generate group, AVG(trimmd.div); illustrate avgdiv;

38 illustrate

39 explain Uno dei principali obiettivi di Pig è quello di consentire allo sviluppatore di pensare in termini di dataflow e dimenticare il MapReduce. Tuttavia in alcuni casi è utile sapere cosa succede dietro le quinte. L'operatore explain mostra come Pig compilerà lo script e quindi come il nostro dataflow verrà espresso in termini di MapReduce. Questo può esser utile sia per fare il debug di uno script che per ottimizzarne le performance. L'outupt di explain non è molto intuitivo e per trarne beneficio è richiesto un certo sforzo da parte dello sviluppatore.

40 explain L'operatore explain può esser utilizzato in due modi: su un alias: in maniera analoga a describe si può chiedere a Pig di mostrare il dataflow con cui verranno generati i dati da inserire in una relazione; su uno script: in alternativa si può chiedere a Pig di illustrare l'intero dataflow associato ad uno script L'output prodotto dall'operatore explain consiste di tre grafici in modalità testuale che illustrano le tre fasi di compilazione di uno script: il logical plan il physical plan l'execution plan

41 explain logical plan Dopo una preliminare verifica grammaticale e sintattica dello script viene prodotto il logical plan, che illustra gli operatori logici che Pig utilizzerà per eseguire lo script. Già in questa fase verranno eseguite delle ottimizzazioni, ad esempio anticipando il più possibile l'esecuzione di operatori come filter che riducono le dimensioni dei dati su cui lavorare e consentono di velocizzare l'esecuzione complessiva dello script. Applichiamo l'operatore explain allo script seguente --explain.pig divs = load 'NYSE_dividends' as (exchange, symbol, date, dividends); grpd = group divs by symbol; avgdiv = foreach grpd generate group, AVG(divs.dividends); store avgdiv into 'average_dividend';

42 explain logical plan # # New Logical Plan: # avgdiv: (Name: LOStore Schema: group#11:bytearray,#27:double) ---avgdiv: (Name: LOForEach Schema: group#11:bytearray,#27:double) (Name: LOGenerate[false,false] Schema: group#11:bytearray,#27:double)columnprune:inputuids=[23, 11]ColumnPrune:OutputUids=[27, 11] group:(name: Project Type: bytearray Uid: 11 Input: 0 Column: (*)) (Name: UserFunc(org.apache.pig.builtin.AVG) Type: double Uid: 27) ---(Name: Dereference Type: bag Uid: 26 Column:[3]) ---divs:(name: Project Type: bag Uid: 23 Input: 1 Column: (*)) ---(Name: LOInnerLoad[0] Schema: group#11:bytearray) ---divs: (Name: LOInnerLoad[1] Schema: exchange#10:bytearray,symbol#11:bytearray,date#12:bytearray,dividends#13:bytearray) ---grpd: (Name: LOCogroup Schema: group#11:bytearray, divs#23:bag{ #28:tuple(exchange#10:bytearray,symbol#11:bytearray,date#12:bytearray,dividends#13:bytearray)}) symbol:(name: Project Type: bytearray Uid: 11 Input: 0 Column: 1) ---divs: (Name: LOLoad Schema: exchange#10:bytearray,symbol#11:bytearray,date#12:bytearray,dividends#13:bytearray)requiredfields:[0, 1, 2, 3]

43 explain physical plan Dopo aver ottimizzato il logical plan, Pig produce il physical plan in cui illustra gli operatori fisici che utilizzerà per eseguire lo script. Questo piano assomiglia molto al precedente salvo il fatto che ora sono ben definite sia le funzioni di load store (es. PigStorage) che i percorsi dei file di input ed output.

44 explain physical plan # # Physical Plan: # avgdiv: Store(fakefile:org.apache.pig.builtin.PigStorage) - scope avgdiv: New For Each(false,false)[bag] - scope-11 Project[bytearray][0] - scope-5 POUserFunc(org.apache.pig.builtin.AVG)[double] - scope-9 ---Project[bag][3] - scope-8 ---Project[bag][1] - scope-7 ---grpd: Package[tuple]{bytearray} - scope-2 ---grpd: Global Rearrange[tuple] - scope-1 ---grpd: Local Rearrange[tuple]{bytearray}(false) - scope-3 Project[bytearray][1] - scope-4 ---divs: Load(hdfs://.../user/hue/NYSE_dividends:org.apache.pig.builtin.PigStorage) - scope-0

45 explain execution plan Come ultimo step Pig partendo dal physical plan decide la miglior strategia per distribuire i vari operatori nel minor numero possibile di job MapReduce. Come prima cosa scorre il plan alla ricerca di tutti gli operatori che impongono una fase di reduce (local / global rearrange, package). Poi verifica se è possibile effettuare delle ottimizzazioni sul piano fisico, ad esempio utilizzando dei combiner o includendo alcune delle operazioni di sort nel sort intrinseco fornito dal Hadoop. Al termine di queste analisi Pig ha preparato il suo execution plan con il dettaglio del numero di job e dei vari operatori da eseguire nelle diverse fasi.

46 explain execution plan # # Map Reduce Plan # MapReduce node scope-13 Map Plan grpd: Local Rearrange[tuple]{bytearray}(false) - scope-26 Project[bytearray][0] - scope avgdiv: New For Each(false,false)[bag] - scope-14 Project[bytearray][0] - scope-15 POUserFunc(org.apache.pig.builtin.AVG$Initial)[tuple] - scope Project[bag][3] - scope Project[bag][1] - scope Pre Combiner Local Rearrange[tuple]{Unknown} - scope divs: Load(hdfs://sandbox.hortonworks.com:8020/user/hue/NYSE_dividends:org.apache.pig.builtin.PigStorage) - scope

47 explain execution plan Combine Plan grpd: Local Rearrange[tuple]{bytearray}(false) - scope-30 Project[bytearray][0] - scope avgdiv: New For Each(false,false)[bag] - scope-19 Project[bytearray][0] - scope-20 POUserFunc(org.apache.pig.builtin.AVG$Intermediate)[tuple] - scope Project[bag][1] - scope POCombinerPackage[tuple]{bytearray} - scope Reduce Plan avgdiv: Store(fakefile:org.apache.pig.builtin.PigStorage) - scope avgdiv: New For Each(false,false)[bag] - scope-11 Project[bytearray][0] - scope-5 POUserFunc(org.apache.pig.builtin.AVG$Final)[double] - scope-9 ---Project[bag][1] - scope POCombinerPackage[tuple]{bytearray} - scope Global sort: false

48 Comandi Base

49 Comandi Base Alla base di un qualunque flusso di elaborazione dati c'è la definizione delle sorgenti di input e di output dei dati. Pig latin offre tre comandi per la loro definizione: load per la definizione delle sorgenti di input store per la definizione delle sorgenti di ouptut dump per mostrare i risultati a video (su console)

50 Load Il formato base del comando è input = load 'data'; Per default il comando load lavora su HDFS e assume come directory di partenza la cartella /user/user_name. E' possibile utilizzare sia path assoluti che relativi o anche specificare la URL completa con l'indirizzo del NameNode: hdfs://my.namenode.org/data/ Per default viene usata la funzione di lettura PigStorage che si aspetta in input file testuali separati da tabulazioni.

51 Load E' possibile possibile specificare opzioni diverse attraverso la clausola using /* comma separated values */ input = load 'data' using PigStorage(','); E' possibile specificare sorgenti diverse dall'hdfs, es. Hbase input = load 'data' using HbaseStorage(); o, se noto, specificare uno schema da associare alla relazione input = load 'data' as ( exchange: chararray, symbol: chararray, date: chararray, dividends: float);

52 Load: globs Se si sostituisce il nome del file con quello di una cartella verranno letti tutti i file presenti nella cartella e il loro contenuto sarà accorpato in un'unica relazione. E' possibile filtrare i nomi con delle regular expressions semplificate (globs) Glob Significato? match con ogni singolo carattere * match con zero o più caratteri [abc] match con un singolo carattere tra quelli specificati [a-z] match con un singolo carattere tra quelli specificati dall'intervallo (estremi inclusi) [^abc] match con un singolo carattere che non sia tra quelli specificati [^a-z] match con un singolo carattere che non sia nell'intervallo (estremi inclusi) \c Rimuove ( escapes ) ogni significato speciale del carattere c {aa, bb} match con una delle stringhe indicate nell'elenco

53 store Operazione duale alla lettura è la scrittura che può essere eseguita con il comando store che segue le stesse regole del comando load. Il formato standard è store 'NomeRelazione' into 'nome_file'; che richiamerà la funzione di default PigStorage. Anche in questo caso il comportamento di deafult può essere modificato con la clausola using store 'NomeRelazione' into 'nome_file' using HBaseStorage();

54 dump L'ultima operazione di output è dump utile sopratutto in modalità interattiva per visualizzare a schermo il contenuto di una relazione. Il suo formato è estremamente semplice dump 'NomeRelazione'; Il comando dump forza l'esecuzione di tutti i comandi dati fino ad ora nella shell.

55 Operatori Relazionali

56 Operatori Relazionali Il punto di forza di Pig-Latin sono gli operatori relazionali, che si ispirano agli equivalenti SQL, ma hanno un comportamento lievemente diversi. I principali sono foreach che applica un insieme di espressioni a ciascun record di una relazione filter che consente di selezionare solo i record di interesse group che consente di accorpare i dati secondo order by che consente di riordinare i record di una relazione join che consente di unificare il contenuto di due relazioni

57 foreach L'operatore foreach applica un insieme di espressioni a ciascun record di una relazione e, come risultato, genera la prossima relazione della pipeline. E' equivalente all'operatore di proiezione del SQL. Il suo formato base è piuttosto semplice A = load 'input' as (user: chararray, id: long, address: chararray, phone: chararray, preferences: map[]); B = foreach A generate user, id; in questo esempio si estraggono da A i campi user e id e con essi viene generata la nuova relazione B.

58 foreach Il vero potenziale dell'operatore foreach emerge con l'applicazione di espressioni sui campi di una relazione. Le più semplici espressioni disponibili sono valori costanti e riferimenti ai campi (per nome o posizione con $pos ) prices = load 'NYSE_daily' as (exchange, symbol, date, open, high, low, close, volume, adj_close); gain = foreach prices generate close-open; gain2 = foreach prices generate $6 - $3; Le due relazioni gain e gain2 avranno gli stessi valori

59 foreach E' possibile specificare gruppi di campi attraverso i simboli * per indicare tutti i campi.. per indicare un intervallo di campi prices = load 'NYSE_daily' as (exchange, symbol, date, open, high, low, close, volume, adj_close); beginning = foreach prices generate..open; -- produces exchange, symbol, date, open middle = foreach prices generate open..close; -- produces open, high, low, close end = foreach prices generate volume..; -- produces volume, adj_close

60 foreach Sono inoltre disponibili le operazioni standard tra numeri + - * / % e l'operatore? equivalente all' if-then-else (con il vincolo che i due valori restituiti siano dello stesso tipo). Nella definizione delle espressioni è bene prestare attenzione ai null perché qualunque operazione aritmetica con un null ha come risultato null. 2 == 2? 1 : 4 --returns 1 2 == 3? 1 : 4 --returns 4 null == 2? 1 : 4 -- returns null 2 == 2? 1 : 'fred' -- type error; both values must be of the same type

61 foreach Gli schemi sono strutture ricorsive, dunque è probabile che si abbia la necessità di estrarre informazioni annidate all'interno di tipi complessi. Per farlo è necessario usare gli operatori di proiezione # per le map. per le tuple A = load 'baseball' as (name:chararray, team:chararray, position:bag{t:(p:chararray)}, bat:map[]); avg = foreach A generate bat#'batting_average'; B = load 'input' as (t:tuple(x:int, y:int)); C = foreach B generate t.x, t.$1;

62 foreach Estrarre informazioni da un bag è invece più complesso perché questo non ha un ordine tra i suoi elementi. L'unica cosa che si può fare è applicare la proiezione ai campi delle tuple contenute nel bag e creare un nuovo bag. A = load 'input' as (b:bag{t:(x:int, y:int, Z:int)}); B = foreach A generate b.(x, y);

CORSO I.F.T.S TECNICHE PER LA PROGETTAZIONE E LA GESTIONE DI DATABASE

CORSO I.F.T.S TECNICHE PER LA PROGETTAZIONE E LA GESTIONE DI DATABASE CORSO I.F.T.S TECNICHE PER LA PROGETTAZIONE E LA GESTIONE DI DATABASE Ing. Mariano Di Claudio Lezione del 20/10/2014 1 Indice 1. HBase e Hrider Caratteristiche chiave Modello dati Architettura Installazione

Dettagli

Strumenti per lo sviluppo del software

Strumenti per lo sviluppo del software Lo sviluppo del software Strumenti per lo sviluppo del software Lo sviluppo del software è l attività centrale del progetto e ha lo scopo di produrre il codice sorgente che, una volta compilato e messo

Dettagli

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

Dettagli

SQL IL LINGUAGGIO DI INTERROGAZIONE

SQL IL LINGUAGGIO DI INTERROGAZIONE SQL IL LINGUAGGIO DI INTERROGAZIONE SQL! Originato da SEQUEL-XRM e System-R (1974-1977) dell IBM! Significato originario Structured Query Language! Standard de facto! Attuale standard ANSI/ISO è SQL:1999

Dettagli

Connessione ad internet

Connessione ad internet Introduzione al C++ Connessione ad internet Istruzioni per la connessione internet: - una volta connessi, aprire un browser (firefox) - in Modifica/preferenze/avanzate/rete/impostazioni - attivare la modalità

Dettagli

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

OR true null false true true true true null true null null false true null false NOT

OR true null false true true true true null true null null false true null false NOT Il linguaggio SQL è un linguaggio standard per la definizione, manipolazione e interrogazione delle basi di dati relazionali ed ha le seguenti caratteristiche: è dichiarativo; opera su multiset di tuple,

Dettagli

OSSIF WEB. Manuale query builder

OSSIF WEB. Manuale query builder OSSIF WEB Manuale query builder - Maggio 2010 1) Sommario 1) SOMMARIO... 2 INTRODUZIONE... 3 Scopo del documento... 3 Struttura del documento... 3 Descrizione dell interfaccia grafica... 3 SELEZIONE DI

Dettagli

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE.

INFORMATICA. Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. INFORMATICA Applicazioni WEB a tre livelli con approfondimento della loro manutenzione e memorizzazione dati e del DATABASE. APPLICAZIONI WEB L architettura di riferimento è quella ampiamente diffusa ed

Dettagli

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini

Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini Introduzione all utilizzo di Visual Basic for Application Utilizzo del linguaggio Basic utilizzando l interfaccia di Excel Silvia Patacchini PROGRAMMAZIONE Insieme delle attività da svolgersi per creare

Dettagli

L istruzione SELECT di SQL

L istruzione SELECT di SQL L istruzione SELECT di SQL Sintassi dell istruzione SELECT... 2 Clausola WHERE... 3 Clausola ORDER BY... 5 Le funzioni di aggregazione... 6 Raggruppamenti... 9 Inner Join (giunzione naturale o join interno)...10

Dettagli

Modelli relazionali. Esistono diversi modi di modellare un database. Il modello piu' usato al momento e' il modello relazionale

Modelli relazionali. Esistono diversi modi di modellare un database. Il modello piu' usato al momento e' il modello relazionale Cenni sui DATABASE Cos'e' un database Un database puo' essere definito come una collezione strutturata di record (dati) I dati sono memorizzati su un computer in modo opportuno e possono essere recuperati

Dettagli

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Corso Base Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO Java Java è un Linguaggio di Programmazione orientato agli oggetti. Un Linguaggio di Programmazione è un linguaggio ad alto livello, dotato

Dettagli

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino Integration Services Project SQL Server 2005 Integration Services Permette di gestire tutti i processi di ETL Basato sui progetti di Business Intelligence di tipo Integration services Project SQL Server

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input

Dettagli

IL LINGUAGGIO SQL. Caratteristiche generali. Il comando Select. Le basi di dati ed il linguaggio SQL A.Lorenzi D.Rossi - ATLAS. Pag.

IL LINGUAGGIO SQL. Caratteristiche generali. Il comando Select. Le basi di dati ed il linguaggio SQL A.Lorenzi D.Rossi - ATLAS. Pag. Caratteristiche generali IL LINGUAGGIO SQL Il linguaggio SQL (Structured Query Language) è un linguaggio non procedurale che è diventato uno standard tra i linguaggi per la gestione di database relazionali.

Dettagli

Il linguaggio SQL: le basi

Il linguaggio SQL: le basi Il linguaggio SQL: le basi Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLa-basi.pdf Sistemi Informativi L-A SQL: caratteristiche generali

Dettagli

MICROSOFT EXCEL INTRODUZIONE PRIMI PASSI

MICROSOFT EXCEL INTRODUZIONE PRIMI PASSI MICROSOFT EXCEL INTRODUZIONE Si tratta di un software appartenente alla categoria dei fogli di calcolo: con essi si intendono veri e propri fogli elettronici, ciascuno dei quali è diviso in righe e colonne,

Dettagli

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7

ESEMPI DI QUERY SQL. Esempi di Query SQL Michele Batocchi AS 2012/2013 Pagina 1 di 7 ESEMPI DI QUERY SQL Dati di esempio... 2 Query su una sola tabella... 2 Esempio 1 (Ordinamento)... 2 Esempio 2 (Scelta di alcune colonne)... 3 Esempio 3 (Condizioni sui dati)... 3 Esempio 4 (Condizioni

Dettagli

Il sistema IBM DB2. Sistemi Informativi T. Versione elettronica: L01.1.IntroduzioneDB2.pdf

Il sistema IBM DB2. Sistemi Informativi T. Versione elettronica: L01.1.IntroduzioneDB2.pdf Il sistema IBM DB2 Sistemi Informativi T Versione elettronica: L01.1.IntroduzioneDB2.pdf IBM DB2 Il DBMS relazionale IBM DB2 è il prodotto di punta dell IBM per la gestione di basi di dati relazionali

Dettagli

SQL (STRUCTURED QUERY LANGUAGE)

SQL (STRUCTURED QUERY LANGUAGE) SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan SQL DDL Data Definition Language DML Data Manipulation Language DCL Data Control Language DDL Obiettivo: Definire la struttura

Dettagli

Introduzione al Python

Introduzione al Python Andrea Passerini passerini@disi.unitn.it Informatica Caratteristiche procedurale si specifica la procedura da eseguire sui dati strutturato concetto di visibililtà delle variabili orientato agli oggetti

Dettagli

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Programmazione in Java (I modulo) Lezione 3: Prime nozioni Programmazione in Java (I modulo) Lezione 3: Prime nozioni La volta scorsa Abbiamo avuto un primo assaggio! Abbiamo visto come usare l editor per scrivere un programma Java. Abbiamo analizzato riga per

Dettagli

L interfaccia a riga di comando di MySql

L interfaccia a riga di comando di MySql L interfaccia a riga di comando di MySql Una volta completata la procedura di installazione possiamo finalmente testare le funzionalità di MySQL. Sia che ci si trovi in ambiente Linux che Windows, l'interfaccia

Dettagli

Operazioni sui database

Operazioni sui database Operazioni sui database Le operazioni nel modello relazionale sono essenzialmente di due tipi: Operazioni di modifica della base di dati (update) Interrogazioni della base di dati per il recupero delle

Dettagli

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R:

Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Esercitazione query in SQL L esercitazione viene effettuata sul database viaggi e vacanze che prevede il seguente modello E/R: Si consiglia di creare il data base, inserire i dati nelle tabelle, provare

Dettagli

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali.

Il linguaggio SQL. è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. (Structured Query Language) : Il linguaggio è di fatto lo standard tra i linguaggi per la gestione di data base relazionali. prima versione IBM alla fine degli anni '70 per un prototipo di ricerca (System

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione Automatizzare i compiti ripetitivi I file batch Anno accademico 2000-01 1 Spesso capita di dover eseguire ripetutatmente una data sequenza di comandi Introdurli uno a uno da tastiera è un processo lento

Dettagli

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque?

HBase Data Model. in più : le colonne sono raccolte in gruppi di colonne detti Column Family; Cosa cambia dunque? NOSQL Data Model HBase si ispira a BigTable di Google e perciò rientra nella categoria dei column store; tuttavia da un punto di vista logico i dati sono ancora organizzati in forma di tabelle, in cui

Dettagli

Il sistema operativo UNIX/Linux. Gli script di shell

Il sistema operativo UNIX/Linux. Gli script di shell Il sistema operativo UNIX/Linux Gli script di shell Introduzione Le shell permettono La gestione di comandi su linea di comando La shell comprende automaticamente quando il costrutto termina e lo esegue

Dettagli

Istruzioni DML di SQL

Istruzioni DML di SQL Istruzioni DML di SQL Pag. 99 par.4 1 Sintassi: Costrutto: INSERT INTO (Inserimento di dati in tabelle) INSERT INTO [(, ,, )] VALUES (, ,

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL

Informatica. Sintassi. Interrogazioni in SQL. Significato dell interrogazione. Tabella Impiegato. Basi di dati parte 4 SQL Informatica Basi di dati parte 4 SQL Lezione 13 Laurea magistrale in Scienze della mente Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 2012 2013 1 Interrogazioni in

Dettagli

SOFTWARE - STEP-7 -AVVIAMENTO DI STEP 7 -Micro/Win (Win 95/98/NT)-

SOFTWARE - STEP-7 -AVVIAMENTO DI STEP 7 -Micro/Win (Win 95/98/NT)- SOFTWARE - STEP-7 -AVVIAMENTO DI STEP 7 -Micro/Win (Win 95/98/NT)- Nella cartella SIMATIC, a cui si accede dal menù di AVVIO, è contenuta la cartella STEP 7- Micro/Win32.Questa contiene a sua volta l icona

Dettagli

Utilizzare il debugger di Visual Studio

Utilizzare il debugger di Visual Studio Appendice F Utilizzare il debugger di Visual Studio Obiettivi Essere in grado di impostare i breakpoint e di eseguire un programma nel debugger. Essere in grado di utilizzare il comando Continue per continuare

Dettagli

Alla scoperta dei Graph Database

Alla scoperta dei Graph Database Alla scoperta dei Graph Database Matteo Pani 24 ottobre 2015 One size doesn t fit all Modellare le relazioni I Graph Database Il Labeled Property Graph Model I Graph-DBMS Neo4j Neo4j Internals Cypher Interagire

Dettagli

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory FILE SYSTEM : INTERFACCIA 8.1 Interfaccia del File System Concetto di File Metodi di Accesso Struttura delle Directory Montaggio del File System Condivisione di File Protezione 8.2 Concetto di File File

Dettagli

Esercitazione 8. Basi di dati e web

Esercitazione 8. Basi di dati e web Esercitazione 8 Basi di dati e web Rev. 1 Basi di dati - prof. Silvio Salza - a.a. 2014-2015 E8-1 Basi di dati e web Una modalità tipica di accesso alle basi di dati è tramite interfacce web Esiste una

Dettagli

Programma di Paradigmi e possibili domande. Capitolo 1

Programma di Paradigmi e possibili domande. Capitolo 1 Definizione di macchina astratta Programma di Paradigmi e possibili domande Capitolo 1 Una macchina astratta per il linguaggio L detta ML, è un qualsiasi insieme di algoritmi e strutture dati che permettono

Dettagli

Metodi per la Gestione dei Dati (lezioni di laboratorio)

Metodi per la Gestione dei Dati (lezioni di laboratorio) Università degli Studi di Modena e Reggio Emilia Facoltà di Scienze della Comunicazione e dell Economia Corso di Laurea in Comunicazione e Marketing Titolare del corso: ing. Stefano SETTI Lezioni di laboratorio

Dettagli

Database e Microsoft Access. Ing. Antonio Guadagno

Database e Microsoft Access. Ing. Antonio Guadagno Database e Microsoft Access Ing. Antonio Guadagno Database e Microsoft Access Un Database non è altro che un insieme di contenitori e di strumenti informatici che ci permette di gestire grossi quantitativi

Dettagli

Hive Dove si posiziona nel panorama BigData?

Hive Dove si posiziona nel panorama BigData? HIVE Dove si posiziona nel panorama BigData? HIVE PIG Data WareHouse in Hadoop: Hadoop consente normalmente di affrontare problemi di Data WareHouse, ma scrivere job complessi per il map/reduce è un processo

Dettagli

Elementi del calcolatore: CPU

Elementi del calcolatore: CPU Elementi del calcolatore: CPU Elementi del calcolatore: Memoria Elementi del calcolatore: Memoria Elementi del calcolatore: Hard Disk Antefatto Sistema Operativo Come il computer appare Il calcolatore

Dettagli

Database e SQL. A cura del prof. Gennaro Cavazza

Database e SQL. A cura del prof. Gennaro Cavazza Database e SQL A cura del prof. Gennaro Cavazza Introduzione ai database La base di qualsiasi esigenza pratica da parte di una qualsiasi organizzazione è quella di gestire dei dati in maniera logica e

Dettagli

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma

SQL: Structured Query Language. T. Catarci, M. Scannapieco, Corso di Basi di Dati, A.A. 2008/2009, Sapienza Università di Roma SQL: Structured Query Language 1 SQL:Componenti Principali Data Manipulation Language (DML): interrogazioni, inserimenti, cancellazioni, modifiche Data Definition Language (DDL): creazione, cancellazione

Dettagli

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza)

SQL -DDL. FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza) 26/03/2013 SQL SQL -DDL Esercizio 4.3 Dare le definizioni SQL delle tre tabelle FONDISTA(Nome, Nazione, Età) GAREGGIA(NomeFondista, NomeGara, Piazzamento) GARA(Nome, Luogo, Nazione, Lunghezza) rappresentando

Dettagli

TESTARE E CREARE APPLICAZIONI TESTUALI JAVA PER ANDROID CON ANDROID

TESTARE E CREARE APPLICAZIONI TESTUALI JAVA PER ANDROID CON ANDROID TESTARE E CREARE APPLICAZIONI TESTUALI JAVA PER ANDROID CON ANDROID Ho deciso di scrivere questa guida per tre motivi principali: 1) Avendo un tablet che ha la possibilità di essere usato per programmare,

Dettagli

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf

Il linguaggio SQL: le basi. Versione elettronica: SQLa-basi.pdf Il linguaggio SQL: le basi Versione elettronica: SQLa-basi.pdf SQL: caratteristiche generali SQL (Structured Query Language) è il linguaggio standard de facto per DBMS relazionali, che riunisce in sé funzionalità

Dettagli

Il linguaggio SQL: viste e tabelle derivate

Il linguaggio SQL: viste e tabelle derivate Il linguaggio SQL: viste e tabelle derivate Sistemi Informativi L-A Home Page del corso: http://www-db.deis.unibo.it/courses/sil-a/ Versione elettronica: SQLd-viste.pdf Sistemi Informativi L-A DB di riferimento

Dettagli

Interfaccia del file system

Interfaccia del file system Interfaccia del file system Concetto di file Modalità di accesso Struttura delle directory Montaggio di un file system Condivisione di file Protezione 9.1 File E un insieme di informazioni correlate e

Dettagli

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a

Join in SQL (primo modo) Informatica. Tabella Dipartimento. Interrogazione 4a. Interrogazione 4b. Interrogazione 4a Join in SQL (primo modo) Informatica Lezione 7 Laurea magistrale in Psicologia Laurea magistrale in Psicologia dello sviluppo e dell'educazione Anno accademico: 09- Per formulare interrogazioni che coinvolgono

Dettagli

2 - Introduzione al linguaggio Java

2 - Introduzione al linguaggio Java 2 - Introduzione al linguaggio Java Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo

Dettagli

Dispensa 3. 1.1 YACC: generalità

Dispensa 3. 1.1 YACC: generalità Dispensa 3 1.1 YACC: generalità Il tool Yacc (acronimo per Yet Another Compiler Compiler) è uno strumento software che a partire da una specifica grammaticale context free di un linguaggio scritta in un

Dettagli

IMSV 0.8. (In Media Stat Virtus) Manuale Utente

IMSV 0.8. (In Media Stat Virtus) Manuale Utente Introduzione IMSV 0.8 (In Media Stat Virtus) Manuale Utente IMSV è una applicazione che calcola che voti può'prendere uno studente negli esami che gli mancano per ottenere la media che desidera. Importante:

Dettagli

LA RAPPRESENTAZIONE DELLE INFORMAZIONI

LA RAPPRESENTAZIONE DELLE INFORMAZIONI ISTITUTO TECNICO E LICEO SCIENTIFICO TECNOLOGICO ANGIOY LA RAPPRESENTAZIONE DELLE INFORMAZIONI Prof. G. Ciaschetti DATI E INFORMAZIONI Sappiamo che il computer è una macchina stupida, capace di eseguire

Dettagli

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf

Il linguaggio SQL: viste e tabelle derivate. Versione elettronica: SQLd-viste.pdf Il linguaggio SQL: viste e tabelle derivate Versione elettronica: SQLd-viste.pdf DB di riferimento per gli esempi Imp Sedi CodImp Nome Sede Ruolo Stipendio Sede Responsabile Citta E001 Rossi S01 Analista

Dettagli

POLITECNICO DI BARI Corso di Laurea in Ingegneria MECCANICA Corso di FONDAMENTI DI INFORMATICA

POLITECNICO DI BARI Corso di Laurea in Ingegneria MECCANICA Corso di FONDAMENTI DI INFORMATICA POLITECNICO DI BARI Corso di Laurea in Ingegneria MECCANICA Corso di FONDAMENTI DI INFORMATICA ACCESSO ALL AMBIENTE DI PROGRAMMAZIONE Microsoft Visual C++ è sufficiente cliccare sul pulsante di Windows,

Dettagli

SQL Server 2005. Integration Services. SQL Server 2005: ETL - 1. Integration Services Project

SQL Server 2005. Integration Services. SQL Server 2005: ETL - 1. Integration Services Project atabase and ata Mi ni ng Group of P ol itecnico di Torino atabase and ata Mi ni ng Group of P ol itecnico di Torino atabase and data mining group, SQL Server 2005 Integration Services SQL Server 2005:

Dettagli

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database

Corso di Informatica. Prerequisiti. Modulo T3 B3 Programmazione lato server. Architettura client/server Conoscenze generali sui database Corso di Informatica Modulo T3 B3 Programmazione lato server 1 Prerequisiti Architettura client/server Conoscenze generali sui database 2 1 Introduzione Lo scopo di questa Unità è descrivere gli strumenti

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione Fondamenti di Programmazione Capitolo 2 Variabili, Espressioni e Comandi Prof. Mauro Gaspari: gaspari@cs.unibo.it Valori e Tipi Un valore (= value) è una delle entità fondamentali che i programmi sono

Dettagli

Rappresentazione delle informazioni

Rappresentazione delle informazioni Rappresentazione delle informazioni Rappresentazione delle informazioni L informatica si occupa di rappresentare ed elaborare informazioni diverse: numeri caratteri audio immagini video I caratteri: ASCII

Dettagli

Programmazione Java. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 3. Alfonso Miola Settembre 2007

Programmazione Java. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 3. Alfonso Miola Settembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 3 Programmazione Java Alfonso Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Programmazione Java 1 Contenuti

Dettagli

DUE GRUPPI DI COMANDI

DUE GRUPPI DI COMANDI LEZIONE16 SQL DDL PAG. 1 / 9 PROF. ANDREA ZOCCHEDDU LEZIONE16 SQL DDL LINGUAGGIO SQL DATA DESCRIPTION LANGUAGE DUE GRUPPI DI COMANDI I comandi del linguaggio SQL sono divisi in due grandi gruppi che formano

Dettagli

USO DI EXCEL COME DATABASE

USO DI EXCEL COME DATABASE USO DI EXCEL COME DATABASE Le funzionalità di calcolo intrinseche di un foglio di lavoro ne fanno uno strumento eccellente per registrarvi pochi dati essenziali, elaborarli con formule di vario tipo e

Dettagli

Lab 01 Sistemi Operativi

Lab 01 Sistemi Operativi Informatica Grafica Ingegneria Edile-Architettura a.a. 2010/2011 Lab 01 Sistemi Operativi Lab01 1 Obiettivi Durante l'esercitazione vedremo come il sistema operativo si occupa di gestire: 1. i processi

Dettagli

Introduzione alla. Alessandra Giordani agiordani@disi.unitn.it Lunedì 27 febbraio 2012 http://disi.unitn.it/~agiordani/ 1

Introduzione alla. Alessandra Giordani agiordani@disi.unitn.it Lunedì 27 febbraio 2012 http://disi.unitn.it/~agiordani/ 1 Introduzione alla Shell di UNIX Alessandra Giordani agiordani@disi.unitn.it Lunedì 27 febbraio 2012 http://disi.unitn.it/~agiordani/ 1 Composizione di un sistema informativo: Hardware (CPU, periferiche,

Dettagli

----------------------------------------------------------------

---------------------------------------------------------------- ---------------------------------------------------------------- utilizzo frequente di chiamate a.. A differenza del Pascal, il C permette di operare con assegnamenti e confronti su dati di tipo diverso,

Dettagli

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI

IL LINGUAGGIO SQL IDENTIFICATORI E TIPI DI DATI COMANDI E ISTRUZIONI IL LINGUAGGIO SQL Il linguaggio SQL ( Structured Query Languages) è un linguaggio non procedurale che è diventato uno standard tra i linguaggi per la gestione dei database relazionali. Il linguaggio procedurale

Dettagli

----------------------------------------------------------------------------

---------------------------------------------------------------------------- APPUNTI DI SQL Gli appunti qui forniti vogliono essere un riferimento scritto di alcuni degli argomenti trattati a lezione per gli studenti a cui vengono messi a disposizione. Non viene fornita alcuna

Dettagli

INFORMATICA E COMPUTER : INTRODUZIONE

INFORMATICA E COMPUTER : INTRODUZIONE INFORMATICA E COMPUTER : INTRODUZIONE! Informatica: dal francese, informatique informat(ion) (automat)ique [termine coniato dall'ingegnere francese Philippe Dreyfus nel 1962] è la scienza che studia i

Dettagli

Sistemi operativi I: Windows. Lezione I

Sistemi operativi I: Windows. Lezione I Sistemi operativi I: Windows Lezione I Scopo della lezione Richiamare le principali funzionalità di un sistema operativo Esemplificarle descrivendo la loro implementazione in Windows Introdurre alcuni

Dettagli

Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL. Simona Rotolo

Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL. Simona Rotolo Suggerimenti per lo Sviluppo delle Applicazioni con PL/SQL Simona Rotolo 2 Questo documento, rivolto a chi sviluppa codice in PL/Sql, è stato redatto al fine di fornire degli standard di sviluppo che aiuteranno

Dettagli

Stored Procedures. Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma

Stored Procedures. Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma Stored Procedures Massimo Mecella Dipartimento di Ingegneria informatica automatica e gestionale Antonio Ruberti Sapienza Università di Roma Progetto di Applicazioni Software Stored Procedure e User Defined

Dettagli

Indice generale. Nota dell editore...xiii. Parte I Antipattern nella progettazione logica di database 11

Indice generale. Nota dell editore...xiii. Parte I Antipattern nella progettazione logica di database 11 Indice generale Nota dell editore...xiii Capitolo 1 Introduzione...1 1.1 A chi si rivolge questo libro... 2 1.2 Contenuto del libro... 3 Struttura del libro... 3 Anatomia di un antipattern... 4 1.3 Che

Dettagli

F O G L I O E L E T T R O N I C O

F O G L I O E L E T T R O N I C O Università degli Studi di Foggia Facoltà di Economia Corso di ELABORAZIONE AUTOMATICA DEI DATI PER LE DECISIONI ECONOMICHE E FINANZIARIE Classe XVII a.a. 2003/2004 Prof. Crescenzio Gallo F O G L I O E

Dettagli

User Tools: DataBase Manager

User Tools: DataBase Manager Spazio di lavoro Per usare T-SQL Assistant selezionare il link Simple Query e spostare a piacere la piccola finestra dove un menu a tendina mostra i diversi comandi SQL selezionabili, il pulsante Preview

Dettagli

Marco Faella Classi enumerate

Marco Faella Classi enumerate Marco Faella Classi enumerate 22 Lezione n. Parole chiave: Java Corso di Laurea: Informatica Insegnamento: Linguaggi di Programmazione II Email Docente: faella.didattica@gmail.com A.A. 2009-2010 Il problema

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

Dettagli

Introduzione alla programmazione in C

Introduzione alla programmazione in C Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale

Dettagli

I file di dati. Unità didattica D1 1

I file di dati. Unità didattica D1 1 I file di dati Unità didattica D1 1 1) I file sequenziali Utili per la memorizzazione di informazioni testuali Si tratta di strutture organizzate per righe e non per record Non sono adatte per grandi quantità

Dettagli

Al giorno d oggi, i sistemi per la gestione di database

Al giorno d oggi, i sistemi per la gestione di database Introduzione Al giorno d oggi, i sistemi per la gestione di database implementano un linguaggio standard chiamato SQL (Structured Query Language). Fra le altre cose, il linguaggio SQL consente di prelevare,

Dettagli

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004

Data Management Software. Il linguaggio SQL. Raggruppamenti. Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004 DB2 Data Management Software Il linguaggio SQL Raggruppamenti Paolo Avallone Sr Consulting IT Specialist DB2, Data Management Marzo 2004 LEGGERE LE SEGUENTI ATTENZIONI Le informazioni contenute in questa

Dettagli

07. Ottimizzare le istruzioni SQL

07. Ottimizzare le istruzioni SQL 07. Ottimizzare le istruzioni SQL Introduzione Union, subquery e Join Il piano di esecuzione L ottimizzatore Le statistiche Il comando EXPLAIN Gli Hint A.A. 2005 Laboratorio di basi di dati - LB 2 La UNION

Dettagli

Microsoft SQL Server Integration Services

Microsoft SQL Server Integration Services Sistemi Informativi Dott.ssa Elisa Turricchia Alma Mater Studiorum - Università di Bologna elisa.turricchia2@unibo.it 1 Microsoft SQL Server Integration Services 1 SQL Server Integration Services SSIS

Dettagli

1) Le Espressioni regolari

1) Le Espressioni regolari ESPRESSIONI REGOLARI e FILTRI SED, GREP e AWK 1) Le Espressioni regolari Un'espressione regolare è un modello che descrive un insieme di stringhe. Le espressioni regolari sono costruite, in maniera analoga

Dettagli

Struttura di un programma Java

Struttura di un programma Java Struttura di un programma Java Un programma in Java è un insieme di dichiarazioni di classi. Una classe non può contenere direttamente delle istruzioni, ma può contenere la dichiarazione di metodi, che

Dettagli

Impararlo è molto semplice, esistono manuali, o meglio mattoni, su SQL, ma qui verranno illustrati tutti i comandi più utilizzati... e utili.

Impararlo è molto semplice, esistono manuali, o meglio mattoni, su SQL, ma qui verranno illustrati tutti i comandi più utilizzati... e utili. Sql è un linguaggio standard che permette di operare con i database. Per database intendo uno qualsiasi e non il solito Access, ma anche Oracle, Microsoft SQL Server, Informix, DB2, Sybase... Sql sta per

Dettagli

Richiesta pagina PHP (es: index.php)

Richiesta pagina PHP (es: index.php) PHP PHP = personal home page SERVER Richiesta pagina PHP (es: index.php) Server Web (Apache) in ascolto sulla porta 80, si accorge che la pagina richiesta è una pagina PHP in base all'estensione o con

Dettagli

SQL (STRUCTURED QUERY LANGUAGE)

SQL (STRUCTURED QUERY LANGUAGE) SQL (STRUCTURED QUERY LANGUAGE) Prof. Nicoletta D Alpaos & Prof. Andrea Borghesan SQL DDL Data Definition Language DML Data Manipulation Language DCL Data Control Language DDL Obiettivo: Definire la struttura

Dettagli

Laboratorio di Informatica

Laboratorio di Informatica Laboratorio di Informatica Introduzione a Python Dottore Paolo Parisen Toldin - parisent@cs.unibo.it Argomenti trattati Che cosa è python Variabili Assegnazione Condizionale Iterazione in una lista di

Dettagli

SMS IN. Rules SMS IN. Rules. Geodrop. Geodrop

SMS IN. Rules SMS IN. Rules. Geodrop. Geodrop SMS IN Rules SMS IN Rules } Geodrop Geodrop SMS In 2.3 Regole per la manipolazione dei messaggi Guida alla scrittura di condizioni complesse Guida alle condizioni complesse v1.0-it, 7 Dicembre 2012 Indice

Dettagli

A.A. 2003-2004. Alessandro Lubisco. Indice

A.A. 2003-2004. Alessandro Lubisco. Indice Laboratorio di indagini campionarie A.A. 2003-2004 Visual Basic for Application in Access 2000 Alessandro Lubisco Indice Definizioni...5 Istruzione...5 Variabile...5 Espressione...5 Espressione numerica...5

Dettagli

Mon Ami 3000 Touch Interfaccia di vendita semplificata per monitor touchscreen

Mon Ami 3000 Touch Interfaccia di vendita semplificata per monitor touchscreen Prerequisiti Mon Ami 3000 Touch Interfaccia di vendita semplificata per monitor touchscreen L opzione Touch è disponibile per le versioni Vendite, Azienda Light e Azienda Pro; per sfruttarne al meglio

Dettagli

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona Programmazione per Bioinformatica Il Calcolatore e la Programmazione Dr Damiano Macedonio Università di Verona Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti:

Dettagli

Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012. Introduzione a Visual Studio 2005/2008/2010

Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012. Introduzione a Visual Studio 2005/2008/2010 Fondamenti di Informatica T-1 CdS Ingegneria Informatica a.a. 2011/2012 Introduzione a Visual Studio 2005/2008/2010 1 Outline Solution e Project Visual Studio e linguaggio C Visual Studio schermata principale

Dettagli

Il linguaggio SQL e Access

Il linguaggio SQL e Access Il linguaggio SQL e Access 1 Linguaggio SQL Caratteristiche generali L SQL (structured query language) è un linguaggio utilizzato per definire, gestire, controllare e reperire dati di un DBMS; prevede

Dettagli

Stream EDitor (sed) sed NON modifica l'input 2. L'output viene inviato allo standard output e puo' essere rediretto

Stream EDitor (sed) sed NON modifica l'input 2. L'output viene inviato allo standard output e puo' essere rediretto Sed & Awk Stream EDitor (sed) sed: editor di linea che non richiede l'interazione con l'utente sed può filtrare l'input che riceve da un file o una pipe La sintassi di sed NON definisce un output: L'output

Dettagli

Esercitazione. Fig. B.1 L ambiente di lavoro Exel

Esercitazione. Fig. B.1 L ambiente di lavoro Exel Esercitazione Exel: il foglio di lavoro B.1 Introduzione Exel è un applicazione che serve per la gestione dei fogli di calcolo. Questo programma fa parte del pacchetto OFFICE. Le applicazioni di Office

Dettagli

Tibet4DExt. Manuale Utente. Un Plug-in 4 th Dimension per accedere agli archivi di Tibet in linea. (Versione 1.7.x)

Tibet4DExt. Manuale Utente. Un Plug-in 4 th Dimension per accedere agli archivi di Tibet in linea. (Versione 1.7.x) Tibet4DExt Un Plug-in 4 th Dimension per accedere agli archivi di Tibet in linea (Versione 1.7.x) Manuale Utente Capitolo 1, Informazioni Generali Informazioni generali su Tibet4DExt Il plug-in Tibet4DExt

Dettagli