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);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

2104 volume III Programmazione

2104 volume III Programmazione 2103 SQLite Capitolo 77 77.1 Utilizzo generale................................. 2104 77.1.1 Utilizzo di sqlite3».......................... 2104 77.1.2 Copie di sicurezza............................ 2106

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

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

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

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

Struttura logica di un programma

Struttura logica di un programma Struttura logica di un programma Tutti i programmi per computer prevedono tre operazioni principali: l input di dati (cioè l inserimento delle informazioni da elaborare) il calcolo dei risultati cercati

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

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

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

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

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

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

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

SCP - Scuola di Calcolo Parallelo - Scheduler per programmi paralleli. Mattia Sessolo I.T.I.S. V.Volterra San Donà di Piave

SCP - Scuola di Calcolo Parallelo - Scheduler per programmi paralleli. Mattia Sessolo I.T.I.S. V.Volterra San Donà di Piave SCP - Scuola di Calcolo Parallelo - Scheduler per programmi paralleli Mattia Sessolo I.T.I.S. V.Volterra San Donà di Piave 2006-2007 Introduzione Questo programma è stato ideato per facilitare e automatizzare

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

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

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

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

Introduzione al foglio elettronico

Introduzione al foglio elettronico Introduzione al foglio elettronico 1. Che cos'è un foglio elettronico? Un foglio elettronico è un programma che permette di inserire dei dati, di calcolare automaticamente i risultati, di ricalcolarli

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

MODULO 5 Basi di dati (database)

MODULO 5 Basi di dati (database) MODULO 5 Basi di dati (database) I contenuti del modulo: questo modulo riguarda la conoscenza da parte del candidato dei concetti fondamentali sulle basi di dati e la sua capacità di utilizzarli. Il modulo

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

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

DBMS (Data Base Management System)

DBMS (Data Base Management System) Cos'è un Database I database o banche dati o base dati sono collezioni di dati, tra loro correlati, utilizzati per rappresentare una porzione del mondo reale. Sono strutturati in modo tale da consentire

Dettagli

Primi passi con Jamio Composer. Dall idea applicativa alla soluzione in pochi minuti

Primi passi con Jamio Composer. Dall idea applicativa alla soluzione in pochi minuti Primi passi con Jamio Composer Dall idea applicativa alla soluzione in pochi minuti Comporre una nuova soluzione applicativa Jamio Composer è l ambiente di modellazione della piattaforma Jamio. Le soluzioni

Dettagli

MySQL Command Line Client: operazioni fondamentali

MySQL Command Line Client: operazioni fondamentali MySQL Command Line Client: operazioni fondamentali INTRODUZIONE Il RDBMS MySQL, oltre a fornire un applicazione che abbia un interfaccia user-friendly, ha a disposizione anche un altro client, che svolge

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Breve riepilogo della puntata precedente:

Breve riepilogo della puntata precedente: Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta

Dettagli

Iniziativa Comunitaria Equal II Fase IT G2 CAM - 017 Futuro Remoto. Approfondimento SOFTWARE PER L ARCHIVIAZIONE

Iniziativa Comunitaria Equal II Fase IT G2 CAM - 017 Futuro Remoto. Approfondimento SOFTWARE PER L ARCHIVIAZIONE APPROFONDIMENTO ICT Iniziativa Comunitaria Equal II Fase IT G2 CAM - 017 Futuro Remoto Approfondimento SOFTWARE PER L ARCHIVIAZIONE ORGANISMO BILATERALE PER LA FORMAZIONE IN CAMPANIA INDICE SOFTWARE PER

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

Introduzione a ROOT. 1. Informazioni generali

Introduzione a ROOT. 1. Informazioni generali Introduzione a ROOT 1. Informazioni generali ROOT è un ambiente visualizzazione e trattamento dati interattivo sviluppato al CERN (si veda il sito ufficiale http://root.cern.ch interamente sviluppato in

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

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache... Appunti di Calcolatori Elettronici Concetti generali sulla memoria cache Introduzione... 1 Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Dettagli

MongoDB. Un database NoSQL Open-Source

MongoDB. Un database NoSQL Open-Source MongoDB Un database NoSQL Open-Source Database Relazionali I dati sono divisi in tabelle. Ogni tabella è composta da diverse colonne fisse. Le tabelle possono avere riferimenti tra loro. A.C.I.D. I database

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

1. I database. La schermata di avvio di Access

1. I database. La schermata di avvio di Access 7 Microsoft Access 1. I database Con il termine database (o base di dati) si intende una raccolta organizzata di dati, strutturati in maniera tale che, effettuandovi operazioni di vario tipo (inserimento

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

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

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

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

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

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

Basi di dati. Microsoft Access. Cosa è. Pietro Pala (pala@dsi.unifi.it) Come iniziare. Aprire un database. Creare un database. Creare un database

Basi di dati. Microsoft Access. Cosa è. Pietro Pala (pala@dsi.unifi.it) Come iniziare. Aprire un database. Creare un database. Creare un database Cosa è Basi di dati Pietro Pala (pala@dsi.unifi.it) Microsoft Access Access è un DBMS relazionale in grado di supportare: Specifica grafica dello schema della base dati Specifica grafica delle interrogazioni

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

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

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

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

FileMaker Server 11. Guida all'aggiornamento dei plug-in

FileMaker Server 11. Guida all'aggiornamento dei plug-in FileMaker Server 11 Guida all'aggiornamento dei plug-in 2010 FileMaker, Inc. Tutti i diritti riservati. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, California 95054 FileMaker è un marchio di

Dettagli

qui possiamo scegliere se creare un nuovo Database oppure aprire un Database già esistente. Fatto ciò avremo questa seconda schermata:

qui possiamo scegliere se creare un nuovo Database oppure aprire un Database già esistente. Fatto ciò avremo questa seconda schermata: Creare un Database completo per la gestione del magazzino. Vedremo di seguito una guida pratica su come creare un Database per la gestione del magazzino e la rispettiva spiegazione analitica: Innanzitutto

Dettagli

Configuratore di Prodotto Diapason

Configuratore di Prodotto Diapason Configuratore di Prodotto Diapason Indice Scopo di questo documento...1 Perché il nuovo Configuratore di Prodotto...2 Il configuratore di prodotto...3 Architettura e impostazione tecnica...5 Piano dei

Dettagli

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO... Modulo A Programmiamo in Pascal Unità didattiche 1. Installiamo il Dev-Pascal 2. Il programma e le variabili 3. Input dei dati 4. Utilizziamo gli operatori matematici e commentiamo il codice COSA IMPAREREMO...

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

GLI SCRIPT DI SHELL. Lucidi a cura di B.De Carolis. UNIX shell script UdB- Dip Informatica

GLI SCRIPT DI SHELL. Lucidi a cura di B.De Carolis. UNIX shell script UdB- Dip Informatica GLI SCRIPT DI SHELL Lucidi a cura di B.De Carolis Shell Unix - Linux comandi Interfaccia di alto livello tra utente e SO. Il processore interpreta e mette in esecuzione comandi da: 1) standard input o

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

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

ROUTINE E PROGRAMMAZIONE

ROUTINE E PROGRAMMAZIONE LEZIONE-TSQL-02 TRIGGER E PROCEDURE (VER03 PAG. 1 / 6 LEZIONE-TSQL-02 TRIGGER E PROCEDURE (VER03 T-SQL PROGRAMMAZIONE PARTE SECONDA ROUTINE E PROGRAMMAZIONE In TSQL è possibile definire alcune routine

Dettagli

TEORIA sulle BASI DI DATI

TEORIA sulle BASI DI DATI TEORIA sulle BASI DI DATI A cura del Prof. Enea Ferri Cos è un DATA BASE E un insieme di archivi legati tra loro da relazioni. Vengono memorizzati su memorie di massa come un unico insieme, e possono essere

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

CONTROLLI AUTOMATICI E AZIONAMENTI ELETTRICI Ingegneria Meccatronica

CONTROLLI AUTOMATICI E AZIONAMENTI ELETTRICI Ingegneria Meccatronica CONTROLLI AUTOMATICI E AZIONAMENTI ELETTRICI Ingegneria Meccatronica CONTROLLI AUTOMATICI e AZIONAMENTI ELETTRICI INTRODUZIONE A MATLAB Ing. Alberto Bellini Tel. 0522 522626 e-mail: alberto.bellini@unimore.it

Dettagli

Strutturazione logica dei dati: i file

Strutturazione logica dei dati: i file Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer

Dettagli

Cultura Tecnologica di Progetto

Cultura Tecnologica di Progetto Cultura Tecnologica di Progetto Politecnico di Milano Facoltà di Disegno Industriale - DATABASE - A.A. 2003-2004 2004 DataBase DB e DataBase Management System DBMS - I database sono archivi che costituiscono

Dettagli

Sommario. Prefazione... 15. Parte 1 - Introduzione

Sommario. Prefazione... 15. Parte 1 - Introduzione Sommario Prefazione... 15 Parte 1 - Introduzione 1.1 L interfaccia utente e le operazioni più comuni... 19 La scheda File...24 Ridurre la barra multifunzione...29 Personalizzare la barra multifunzione...29

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

Volumi di riferimento

Volumi di riferimento Simulazione seconda prova Esame di Stato Gestione di un centro agroalimentare all ingrosso Parte prima) Un nuovo centro agroalimentare all'ingrosso intende realizzare una base di dati per l'attività di

Dettagli

Logout [ e01692 ] FAQ Cerca Iscritti Pannello di Controllo Utente. Ultimo accesso: ieri, 8:07 Oggi è 07/04/2009, 9:44

Logout [ e01692 ] FAQ Cerca Iscritti Pannello di Controllo Utente. Ultimo accesso: ieri, 8:07 Oggi è 07/04/2009, 9:44 lnx.brescianet.com Sito didattico - Prof. Sechi Marco Logout [ e01692 ] FAQ Cerca Iscritti Pannello di Controllo Utente Ultimo accesso: ieri, 8:07 Oggi è 07/04/2009, 9:44 Messaggi senza risposta Argomenti

Dettagli

Volume GESTFLORA. Gestione aziende agricole e floricole. Guidaall uso del software

Volume GESTFLORA. Gestione aziende agricole e floricole. Guidaall uso del software Volume GESTFLORA Gestione aziende agricole e floricole Guidaall uso del software GESTIONE AZIENDE AGRICOLE E FLORICOLE Guida all uso del software GestFlora Ver. 2.00 Inter-Ware Srl Viadegli Innocenti,

Dettagli

Corso di Esercitazioni di Programmazione

Corso di Esercitazioni di Programmazione Corso di Esercitazioni di Programmazione Introduzione Dott.ssa Sabina Rossi Informazioni Pagina web del corso: News Orari Mailing list Lezioni Esercitazioni Date esami Risultati esami.. http://www.dsi.unive.it/~prog1

Dettagli

LUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014

LUdeS Informatica 2 EXCEL. Seconda parte AA 2013/2014 LUdeS Informatica 2 EXCEL Seconda parte AA 2013/2014 STAMPA Quando si esegue il comando FILE STAMPA, Excel manda alla stampante tutte le celle del foglio di lavoro corrente che hanno un contenuto. Il numero

Dettagli

NOZIONI BASE PER ESERCITAZIONI

NOZIONI BASE PER ESERCITAZIONI NOZIONI BASE PER ESERCITAZIONI Shahram Rahatlou Laboratorio di Calcolo, Anno Accademico 2015-16 http://www.roma1.infn.it/people/rahatlou/labcalc/ Sistema Operativo Hardware Software n Routine e programmi

Dettagli

Il.NET Framework. By Dario Maggiari. L architettura del.net Framework è riassunta, nel complesso, nella figura seguente:

Il.NET Framework. By Dario Maggiari. L architettura del.net Framework è riassunta, nel complesso, nella figura seguente: Il.NET Framework By Dario Maggiari L architettura del.net Framework è riassunta, nel complesso, nella figura seguente: Il cuore del.net Framework è costituito dal CLR (Common Language Runtime) che, secondo

Dettagli

OPERATORE CORSO ISI PORTAL. Riferimenti. Il portale è disponibile all'indirizzo: FRONTEND http://www.sssup.isiportal.com

OPERATORE CORSO ISI PORTAL. Riferimenti. Il portale è disponibile all'indirizzo: FRONTEND http://www.sssup.isiportal.com Pagina 1 CORSO ISI PORTAL OPERATORE Il portale è disponibile all'indirizzo: FRONTEND http://www.sssup.isiportal.com Riferimenti BACKOFFICE ISIPORTAL http://www.sssup.isiportal.com/logon.jsp ISI Portal:

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