hive
HIVE में फ़ाइल स्वरूप
खोज…
SEQUENCEFILE
यदि डेटा को संपीड़ित करने की आवश्यकता है, तो SEQUENCEFILE में डेटा संग्रहीत करें। आप टेक्स्ट फ़ाइलों को Gzip या Bzip2 के साथ सीधे TextFile के रूप में संग्रहीत तालिका में आयात कर सकते हैं। संपीड़न स्वचालित रूप से पता लगाया जाएगा और क्वेरी निष्पादन के दौरान फ़ाइल डिकम्पोज हो जाएगी।
CREATE TABLE raw_sequence (line STRING)
STORED AS SEQUENCEFILE;
ओआरसी
ऑप्टिमाइज़्ड रो कॉलम (ORC) फ़ाइल स्वरूप हाइव डेटा को संग्रहीत करने का एक अत्यधिक कुशल तरीका प्रदान करता है। इसे अन्य हाइव फ़ाइल स्वरूपों की सीमाओं को पार करने के लिए डिज़ाइन किया गया था। जब हाइव पढ़ रहा है, लिख रहा है, और डेटा प्रोसेसिंग कर रहा है, तो ORC फ़ाइलों के उपयोग से प्रदर्शन में सुधार होता है। ओआरसी फ़ाइल में हल्के अनुक्रमित और खिलने वाले फ़िल्टर हो सकते हैं।
देखें: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+ORC
ORC 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"
)
तालिका को संशोधित करने के लिए ताकि तालिका के नए विभाजन को ORC फ़ाइलों के रूप में संग्रहीत किया जाए:
ALTER TABLE T SET FILEFORMAT ORC;
Hive 0.14 के अनुसार, उपयोगकर्ता अपनी तालिका या विभाजन पर एक CONCATENATE
कमांड जारी करके एक साथ छोटी ORC फ़ाइलों के एक कुशल मर्ज का अनुरोध कर सकते हैं। फ़ाइलें reserializatoin के बिना धारी स्तर पर मर्ज की जाएंगी।
ALTER TABLE T [PARTITION partition_spec] CONCATENATE;
लकड़ी की छत
हाइव 0.13.0 और बाद में लकड़ी की छत स्तंभ भंडारण प्रारूप। लकड़ी की छत जमीन से जटिल नेस्टेड डेटा संरचनाओं को ध्यान में रखते हुए बनाई गई है, और डरमेल पेपर में वर्णित रिकॉर्ड श्रेडिंग और असेंबली एल्गोरिदम का उपयोग करता है। हमारा मानना है कि यह दृष्टिकोण नेस्टेड नेम स्पेस के सरल समतल से बेहतर है।
लकड़ी की छत बहुत कुशल संपीड़न और एन्कोडिंग योजनाओं का समर्थन करने के लिए बनाया गया है। कई परियोजनाओं ने डेटा को सही संपीड़न और एन्कोडिंग योजना को लागू करने के प्रदर्शन प्रभाव का प्रदर्शन किया है। लकड़ी की छत पर संपीड़न योजनाओं को प्रति-स्तंभ स्तर पर निर्दिष्ट करने की अनुमति मिलती है, और भविष्य में प्रूफ किया जाता है ताकि उन्हें आविष्कार और कार्यान्वित किया जा सके।
Parou Cloudera वितरण में इम्पाला टेबल्स के साथ फ़ाइल स्वरूप की सिफारिश की है।
देखें: http://parquet.apache.org/documentation/latest/
CREATE TABLE parquet_table_name (x INT, y STRING) STORED AS PARQUET;
एवरो
Avive फ़ाइलों को Hive 0.14.0 और बाद में समर्थित किया गया है।
एवरो एक दूरस्थ प्रक्रिया कॉल और अपाचे के Hadoop परियोजना के भीतर विकसित डेटा क्रमांकन ढांचा है। यह डेटा प्रकार और प्रोटोकॉल को परिभाषित करने के लिए JSON का उपयोग करता है, और एक कॉम्पैक्ट बाइनरी प्रारूप में डेटा को क्रमबद्ध करता है। इसका प्राथमिक उपयोग Apache Hadoop में होता है, जहाँ यह निरंतर डेटा के लिए क्रमांकन प्रारूप और Hadoop नोड्स के बीच संचार के लिए एक वायर प्रारूप और क्लाइंट प्रोग्राम्स से Hadoop सेवाओं को प्रदान कर सकता है।
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');
हम स्कीमा फ़ाइल का उपयोग किए बिना सिंटैक्स के नीचे भी उपयोग कर सकते हैं।
CREATE TABLE kst (field1 string, field2 int)
PARTITIONED BY (ds string)
STORED AS AVRO;
STORED AS AVRO
क्लॉज के STORED AS AVRO
ऊपर के उदाहरणों के बराबर है:
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'
पाठ फ़ाइल
TextFile डिफ़ॉल्ट फ़ाइल स्वरूप है, जब तक कि कॉन्फ़िगरेशन पैरामीटर hive.default.fileformat की एक अलग सेटिंग नहीं है। हम अपनी सीमांकित पाठ फ़ाइल में फ़ील्ड नामों का उपयोग करके हाइव पर एक तालिका बना सकते हैं। उदाहरण के लिए, हमारी सीएसवी फ़ाइल में तीन फ़ील्ड (आईडी, नाम, वेतन) शामिल हैं और हम "कर्मचारी" नामक छत्ते में एक तालिका बनाना चाहते हैं। हम हाइव में तालिका बनाने के लिए नीचे दिए गए कोड का उपयोग करेंगे।
CREATE TABLE employees (id int, name string, salary double) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';
अब हम अपनी तालिका में एक पाठ फ़ाइल लोड कर सकते हैं:
LOAD DATA LOCAL INPATH '/home/ourcsvfile.csv' OVERWRITE INTO TABLE employees;
यदि डेटा सफलतापूर्वक लोड किया गया था, तो यह जांचने के लिए हाइव पर हमारी तालिका की सामग्री प्रदर्शित करना:
SELECT * FROM employees;