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