hive
Formati di file in HIVE
Ricerca…
SEQUENCEFILE
Memorizza i dati in SEQUENCEFILE se i dati devono essere compressi. Puoi importare file di testo compressi con Gzip o Bzip2 direttamente in una tabella memorizzata come TextFile. La compressione verrà rilevata automaticamente e il file verrà decompresso al volo durante l'esecuzione della query.
CREATE TABLE raw_sequence (line STRING)
STORED AS SEQUENCEFILE;
ORC
Il formato di file Ottimized Row Columnar (ORC) fornisce un modo estremamente efficiente per archiviare i dati Hive. È stato progettato per superare i limiti degli altri formati di file Hive. L'uso dei file ORC migliora le prestazioni quando Hive legge, scrive e elabora i dati. Il file ORC può contenere indici leggeri e filtri bloom.
Vedi: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC
ORC è un formato consigliato per la memorizzazione dei dati nella distribuzione di HortonWorks.
CREATE TABLE tab_orc (col1 STRING,
col2 STRING,
col3 STRING)
STORED AS ORC
TBLPROPERTIES (
"orc.compress"="SNAPPY",
"orc.bloom.filter.columns"="col1",
"orc.create.index" = "true"
)
Per modificare una tabella in modo che le nuove partizioni della tabella siano memorizzate come file ORC:
ALTER TABLE T SET FILEFORMAT ORC;
A partire da Hive 0.14, gli utenti possono richiedere un'efficace unione di piccoli file ORC mediante l'emissione di un comando CONCATENATE sulla propria tabella o partizione. I file verranno uniti a livello di strip senza reserializatoin.
ALTER TABLE T [PARTITION partition_spec] CONCATENATE;
PARQUET
Formato di archiviazione colonnare del parquet in Hive 0.13.0 e versioni successive. Parquet è costruito da zero con strutture di dati nidificati complessi in mente e utilizza l'algoritmo di triturazione e assemblaggio dei record descritto nel documento Dremel. Riteniamo che questo approccio sia superiore al semplice appiattimento degli spazi dei nomi annidati.
Parquet è progettato per supportare schemi di compressione e codifica molto efficienti. Più progetti hanno dimostrato l'impatto sulle prestazioni dell'applicazione del giusto schema di compressione e codifica ai dati. Parquet consente di specificare gli schemi di compressione a livello di colonna, ed è a prova di futuro per consentire l'aggiunta di ulteriori codifiche man mano che vengono inventate e implementate.
Parquet è raccomandato il formato file con impala Tables nelle distribuzioni Cloudera.
Vedi: http://parquet.apache.org/documentation/latest/
CREATE TABLE parquet_table_name (x INT, y STRING) STORED AS PARQUET;
AVRO
I file Avro sono stati supportati in Hive 0.14.0 e versioni successive.
Avro è una chiamata di procedura remota e un framework di serializzazione dei dati sviluppato all'interno del progetto Hadoop di Apache. Usa JSON per definire tipi di dati e protocolli e serializza i dati in un formato binario compatto. Il suo uso principale è in Apache Hadoop, dove può fornire sia un formato di serializzazione per i dati persistenti, sia un formato wire per la comunicazione tra i nodi Hadoop e dai programmi client ai servizi Hadoop.
Specifica del formato AVRO: https://avro.apache.org/docs/1.7.7/spec.html
CREATE TABLE kst
PARTITIONED BY (ds string)
STORED AS AVRO
TBLPROPERTIES (
'avro.schema.url'='http://schema_provider/kst.avsc');
Possiamo anche utilizzare la sintassi sottostante senza utilizzare il file di schema.
CREATE TABLE kst (field1 string, field2 int)
PARTITIONED BY (ds string)
STORED AS AVRO;
Negli esempi sopra STORED AS AVRO clausola STORED AS AVRO è equivalente a:
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.avro.AvroSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.avro.AvroContainerOutputFormat'
File di testo
TextFile è il formato file predefinito, a meno che il parametro di configurazione hive.default.fileformat abbia un'impostazione diversa. Possiamo creare una tabella su hive usando i nomi dei campi nel nostro file di testo delimitato. Diciamo per esempio, il nostro file csv contiene tre campi (id, nome, stipendio) e vogliamo creare una tabella in hive chiamata "dipendenti". Utilizzeremo il seguente codice per creare la tabella nell'alveare.
CREATE TABLE employees (id int, name string, salary double) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
Ora possiamo caricare un file di testo nella nostra tabella:
LOAD DATA LOCAL INPATH '/home/ourcsvfile.csv' OVERWRITE INTO TABLE employees;
Visualizzare i contenuti della nostra tabella su hive per verificare se i dati sono stati caricati correttamente:
SELECT * FROM employees;