मेरे पास कुछ वेब सर्वर लॉग हैं जिन्हें मैं हाइव से पूछना चाहता हूं। निर्देशिका संरचना, HDFS में, इस तरह दिखता है:विभाजन के बिना उपनिर्देशिका में रिकर्सिव रूप से उतर सकते हैं या hive-site.xml संपादित कर सकते हैं?
/data/access/web1/2014/09
/data/access/web1/2014/09/access-20140901.log
[... etc ...]
/data/access/web1/2014/10
/data/access/web1/2014/10/access-20141001.log
[... etc ...]
/data/access/web2/2014/09
/data/access/web2/2014/09/access-20140901.log
[... etc ...]
/data/access/web2/2014/10
/data/access/web2/2014/10/access-20141001.log
[... etc ...]
मैं एक बाहरी तालिका बनाने के लिए कर सकती हूं:
CREATE EXTERNAL TABLE access(
host STRING,
identity STRING,
user STRING,
time STRING,
request STRING,
status STRING,
size STRING,
referer STRING,
agent STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|\\[[^\\]]*\\]) ([^ \"]*|\"[^\"]*\") (-|[0-9]*) (-|[0-9]*)(?: ([^ \"]*|\"[^\"]*\") ([^ \"]*|\"[^\"]*\"))?",
"output.format.string" = "%1$s %2$s %3$s %4$s %5$s %6$s %7$s %8$s %9$s")
LOCATION '/data/access/'
... जब तक कि मैं चलाने हालांकि हाइव सबफ़ोल्डर में उतर नहीं करता
set hive.input.dir.recursive=true;
set hive.mapred.supports.subdirectories=true;
set hive.supports.subdirectories=true;
set mapred.input.dir.recursive=true;
मैंने देखा है अन्य पदों तालिका स्तर (Issue creating Hive External table using tblproperties जैसे) पर इन गुणों को सेट: हाइव क्वेरी चलाने से पहले निम्न कमांड
TBLPROPERTIES ("hive.input.dir.recursive" = "TRUE",
"hive.mapred.supports.subdirectories" = "TRUE",
"hive.supports.subdirectories" = "TRUE",
"mapred.input.dir.recursive" = "TRUE");
दुर्भाग्यवश, यह मेरे लिए काम नहीं करता है: तालिका जब मैं पूछता हूं तो कोई रिकॉर्ड वापस नहीं करता है। मैं समझता हूं कि इन गुणों को hive-site.xml में सेट करना संभव है, लेकिन मुझे कोई बदलाव नहीं करना पड़ेगा जो अन्य उपयोगकर्ताओं को प्रभावित कर सकता है यदि मुझे आवश्यकता नहीं है।
क्यू) क्या कोई तालिका बनाने का कोई तरीका है जो विभाजन का उपयोग किए बिना उपनिर्देशिका में उतरता है, साइट-व्यापी परिवर्तन करता है, या हर 4 आज्ञाओं को चलाता है?
पर काम किया आप जब मैं विकल्प के बिना लागू HIVE_HOME/bin/.hiverc और $ HOME/लोड करने का प्रयास करेंगे .hiverc CLI में इन 4 आदेश डाल सकते हैं। प्रारंभिक फाइलों के रूप में hiverc। – user3484461