我在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条答案
按热度按时间2w3rbyxf1#
load data命令只将文件复制到目标目录。它不读取输入文件的记录,因此不能基于记录值进行分区。
这就是为什么您的记录会被您在分区中提到的静态值覆盖。
在您的情况下,我猜您正在寻找动态分区