我将日志文件存储为HDFS中的文本.当我将日志文件加载到Hive表中时,将复制所有文件.
我可以避免将所有文本数据存储两次吗?
编辑:我通过以下命令加载它
LOAD DATA INPATH '/user/logs/mylogfile' INTO TABLE `sandbox.test` PARTITION (day='20130221')
Run Code Online (Sandbox Code Playgroud)
然后,我可以在以下位置找到完全相同的文件:
/user/hive/warehouse/sandbox.db/test/day=20130220
Run Code Online (Sandbox Code Playgroud)
我以为它被复制了.
小智 14
使用外部表:
CREATE EXTERNAL TABLE sandbox.test(id BIGINT, name STRING) ROW FORMAT
DELIMITED FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
STORED AS TEXTFILE
LOCATION '/user/logs/';
Run Code Online (Sandbox Code Playgroud)
如果要使用外部表进行分区,则需要负责管理分区目录.指定的位置必须是hdfs目录..
如果删除外部表配置单元,则不会删除源数据.如果你要管理你的原始文件,使用外部表.如果您希望配置单元执行此操作,请将hive存储在其仓库路径中.