定期导入.CSV文件HDFS

时间:2018-07-26 10:48:00

标签: csv hadoop hdfs sqoop

我有多个包含人员详细信息的csv文件。我使用-copyFromLocal命令将其复制到HDFS中,并使用Hive表进行查看。但是现在我的新用例是本地更新这些csv文件,我希望这些数据在HDFS中进行更新,就像Sqoop Inceremental导入将RDBMS中的数据复制到HDFS一样。有什么方法可以做,并建议我怎么做。

1 个答案:

答案 0 :(得分:0)

假定每个文件包含相同的字段。

创建一个顶级HDFS目录,放置每天的日期分区

function q51539865
%% Image From URL
%
% <<https://i.stack.imgur.com/zSPip.jpg>>
%

%% Image From Relative Path
%
% <<../InnerPath/zSPip.jpg>>
%

然后在其上定义一个表格

/daily_import 
    /day=20180704
        /file.csv
   /day=20180705
       /file.csv

然后每天将文件复制到适当的HDFS位置后,对新分区执行metastore刷新

CREATE EXTERNAL TABLE daily_csv (
... 
) PARTITIONED BY (`day` STRING) 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' STORED AS TEXT -- Use  CsvSerde instead!
LOCATION '/daily_import'
;