配置单元管理的表不会放在azure数据湖存储上

muk1a3rh  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(340)

我最近发现了一个我称之为bug的东西,我肯定它是bug。
我们在一个带有hdinsight 3.6的azure平台上工作,该平台有两个独立的存储:blobstorage和datalake存储。我们大部分工作都用Hive。
据我们所知,当您删除托管表时,该表下的数据也会被删除。为了确保这一点,我们尝试了以下方法:

CREATE TABLE test(id String) PARTITIONED BY (part String) STORED AS ORC ;
INSERT INTO TABLE PARTITION(part='part1') VALUES('id1') ; 
INSERT INTO TABLE PARTITION(part='part2') VALUES('id2') ; 
INSERT INTO TABLE PARTITION(part='part3') VALUES('id3') ;

这些查询在默认数据库(即blob存储)上执行。数据很好地存储在表test的位置下:如果我们检查有三个目录part=*和它们下面的文件。
然后我放下table:

DROP TABLE test ;

如果我们检查数据库目录,就没有更多名为test的目录,因此数据会被很好地删除,我们希望这是正确的配置单元行为。
现在是诀窍:在我们的工作中,我们使用datalake存储上的数据库,当我们使用以下代码时:

use database_located_on_adl ; 
CREATE TABLE test(id String) PARTITIONED BY (part String) STORED AS ORC ;
INSERT INTO TABLE PARTITION(part='part1') VALUES('id1') ; 
INSERT INTO TABLE PARTITION(part='part2') VALUES('id2') ; 
INSERT INTO TABLE PARTITION(part='part3') VALUES('id3') ; 
DROP TABLE test ;

表创建得很好,数据存储得很好,但数据不会被放到 DROP TABLE 命令。。。
我错过什么了吗?或者这是正常的行为?

xqkwcwgp

xqkwcwgp1#

如果有人看到这篇旧文章并有相同的问题:我们的问题是我们错过了hive垃圾箱(/user/hiveusername/.trash hdfs文件夹)上的写入权限。
希望这能有所帮助!

相关问题