在“ Programming Hive”的第15章中,有一个如下示例。
CREATE TABLE binary_table (num1 INT, num2 INT)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES ('serialization.last.column.takes.rest'='true')
STORED AS
INPUTFORMAT 'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.HiveBinaryOutputFormat';
当我对此表执行一些SELECT时,Hive将使用TextInputFormat从hdfs中读取记录。但是当我执行一些INSERT或UPDATE时,Hive将使用BinaryOutputFormat将行写入hdfs。
这很奇怪。在某些INSERT或UPDATE之后执行SELECT查询时会发生什么情况。
还有一个关于以下SQL的问题。
LOAD DATA LOCAL INPATH '${env:HOME}/california-employees'
OVERWRITE INTO TABLE employees
PARTITION (country = 'US', state = 'CA');
蜂巢会选择哪种输入格式来读取源文件?