Sök…
SEQUENCEFILE
Lagra data i SEKVENSFIL om uppgifterna behöver komprimeras. Du kan importera textfiler komprimerade med Gzip eller Bzip2 direkt till en tabell lagrad som TextFile. Komprimeringen kommer att upptäckas automatiskt och filen kommer att komprimeras on-the-fly under körning av frågan.
CREATE TABLE raw_sequence (line STRING)
STORED AS SEQUENCEFILE;
ORC
Filformatet Optimized Row Columnar (ORC) ger ett mycket effektivt sätt att lagra Hive-data. Det var utformat för att övervinna begränsningarna i andra Hive-filformat. Att använda ORC-filer förbättrar prestanda när Hive läser, skriver och bearbetar data. ORC-fil kan innehålla lätta index och blomfilter.
Se: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC
ORC är ett rekommenderat format för lagring av data inom HortonWorks distribution.
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"
)
Så här modifierar du en tabell så att nya partitioner i tabellen lagras som ORC-filer:
ALTER TABLE T SET FILEFORMAT ORC;
Från Hive 0.14 kan användare begära en effektiv sammanslagning av små ORC-filer tillsammans genom att utfärda ett CONCATENATE
kommando på deras bord eller partition. Filerna kommer att slås samman på stripnivå utan reserializatoin.
ALTER TABLE T [PARTITION partition_spec] CONCATENATE;
PARKETT
Parkett columnar lagringsformat i Hive 0.13.0 och senare. Parkett är uppbyggt från grunden med komplexa kapslade datastrukturer i åtanke och använder rekordrivnings- och monteringsalgoritmen som beskrivs i Dremel-papperet. Vi tror att detta tillvägagångssätt är överlägset för enkel utplattning av kapslade namnutrymmen.
Parkett är byggt för att stödja mycket effektiva komprimerings- och kodningssystem. Flera projekt har visat resultatpåverkan av att tillämpa rätt komprimerings- och kodningsschema på data. Parkett gör det möjligt att specificera kompressionsscheman per kolumnnivå och är framtidssäkra för att tillåta fler kodningar när de uppfinns och implementeras.
Parkett rekommenderas filformat med impala-tabeller i Cloudera-distributioner.
Se: http://parquet.apache.org/documentation/latest/
CREATE TABLE parquet_table_name (x INT, y STRING) STORED AS PARQUET;
AVRO
Avro-filer stöds i Hive 0.14.0 och senare.
Avro är ett fjärrprocedureringssamtal och dataserialiseringsram som utvecklats inom Apaches Hadoop-projekt. Den använder JSON för att definiera datatyper och protokoll och serialiserar data i ett kompakt binärt format. Den främsta användningen är i Apache Hadoop, där den kan tillhandahålla både ett serialiseringsformat för ihållande data och ett trådformat för kommunikation mellan Hadoop-noder och från klientprogram till Hadoop-tjänsterna.
Specifikation av AVRO-format: 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');
Vi kan också använda syntax nedan utan att använda schemafil.
CREATE TABLE kst (field1 string, field2 int)
PARTITIONED BY (ds string)
STORED AS AVRO;
I exemplen ovan är STORED AS AVRO
klausulen motsvarande:
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'
Textfil
TextFile är standardfilformatet, såvida inte konfigurationsparametern hive.default.fileformat har en annan inställning. Vi kan skapa en tabell över bikupa med fältnamn i vår avgränsade textfil. Låt oss säga till exempel att vår csv-fil innehåller tre fält (id, namn, lön) och vi vill skapa en tabell i bikupan som kallas "anställda". Vi kommer att använda koden nedan för att skapa tabellen i bikupan.
CREATE TABLE employees (id int, name string, salary double) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
Nu kan vi ladda en textfil i tabellen:
LOAD DATA LOCAL INPATH '/home/ourcsvfile.csv' OVERWRITE INTO TABLE employees;
Visar innehållet i vårt bord på bikupan för att kontrollera om uppgifterna har laddats:
SELECT * FROM employees;