我在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列都会被我分区的数据覆盖。
据我了解,当根据特定日期对数据进行分区时,会创建一个目录,其中只创建一个匹配分区日期的文件。
答案 0 :(得分:0)
LOAD DATA命令仅将文件复制到目标目录。它没有读取输入文件的记录,因此无法根据记录值进行分区。
这就是你的记录被你在分区中提到的静态值覆盖的原因。
在您的情况下,我猜您正在寻找动态分区参考this