我的主要目的是创建一个存储为ORC的表。为此,我跟着these steps
我创建了一个文件夹 / user / hive / external ,并在同一位置创建了两个表格( table_txt & table_orc ) 。直到加载table_txt中的数据,这很好。
现在,我发现,当我使用
将数据从table_txt移动到table_orc时INSERT OVERWRITE TABLE table_orc SELECT * FROM table_txt;
路径* / external中的表被删除(在Web UI上查看),现在我有一个名为&#34的文件。 000000_0"点击它,我得到一些编码的东西。
问题 -
1-这是什么000000_0文件以及为什么不在Web UI上显示表
2-当我查询table_txt时,为什么它不提供任何数据?而在查询table_orc时,我得到了结果?
答案 0 :(得分:0)
在同一位置创建了两个表... ==> RED FLAG !!!
位置定义哪些数据文件属于哪个表。换句话说,每个表都应位于私人目录。
因此INSERT OVERWRITE
删除了ORC表的私有目录中的所有内容,然后创建了一个新的数据文件 - 采用ORC二进制格式。这是预期的行为。太糟糕了TXT文件也存在。
顺便说一句,“外部”和“托管”表之间的区别在于,当您drop
托管表时,整个目录都会被销毁,而删除外部表则会将数据保留为-is。