是否可以在不复制数据的情况下将数据导入Hive表

Mad*_*het 10 hadoop hive hdfs

我将日志文件存储为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存储在其仓库路径中.