当我加载数据时,完整的数据列将被覆盖

时间:2015-04-14 01:32:32

标签: hadoop insert hive database-partitioning

我在Hadoop中尝试了一个简单的例子,如下所示:

我创建了一个表:

CREATE TABLE Empl(EmpID INT,EmpName STRING,SALARY FLOAT)
PARTITIONED BY (DOJ DATE)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n';

加载数据:

LOAD DATA LOCAL INPATH '/home/jugal/Desktop/example' INTO TABLE empl PARTITION(DOJ='2013-04-05');

文件中的数据:

101,Jugal,8000,'2015-04-04'
102,Kannappan,9000,'2015-04-04'
103,Prasanna,10000,'2014-04-01'
104,Hafiez,7000,'2015-04-09'
105,Ashwin,9500,'2013-04-05'

每次加载分区数据时,完整的DOJ列都会被我分区的数据覆盖。

据我了解,当根据特定日期对数据进行分区时,会创建一个目录,其中只创建一个匹配分区日期的文件。

1 个答案:

答案 0 :(得分:0)

LOAD DATA命令仅将文件复制到目标目录。它没有读取输入文件的记录,因此无法根据记录值进行分区。

这就是你的记录被你在分区中提到的静态值覆盖的原因。

在您的情况下,我猜您正在寻找动态分区参考this