我有一个具有以下配置的Hive表TEST:
create external table if not exists TEST ( ID bigint, ACTIVITY_ID string, BATCH_NBR ) PARTITIONED BY (year INT, month INT, day INT) CLUSTERED BY (BATCH_NBR) into 20 buckets ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LOCATION '/user/lake/hive/test';
而且我在这个位置有Hive文件,可以轻松地将其加载到Hive表中并且可以正常工作。
/ user / lake / hive / test / 2013/01/01 / part-r-00001
现在,如果我创建另一个表STORE并从该TEST表中插入一些数据,则文件夹结构将更改Test表。我期望加载相同的数据后,STORE表的位置将具有以下内容:
/user/core/store/2014/07/03/batch123231.1313
但是上述位置更改为:
/ user / core / store / year = 2013 / month = 01 / day = 01 /
我正在使用insert overwrite table STORE select * from TEST;
查询从TEST加载STORE表。
如何加载该表并在目标位置保留相同的文件夹结构?
Hive中的内部表将遵循/ apps / hive / warehouse文件夹中它们自己的/默认文件夹结构,并且如果从外部Hive表中加载数据,则不会保留文件夹结构。我将内部表用于“商店”,因此无法正常工作。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句