java - 将配置单元外部表更改为同一数据库中的内部表也会删除另一个表中的数据

标签 java hadoop hive hiveql hive-table

我一直在尝试使用语句删除配置单元外部表

alter table $tableName set tblproperties('EXTERNAL' = 'FALSE');

在我传递这些属性并执行

DROP TABLE TABLENAME;

此命令还会从该目录中的其他配置单元表中删除数据 数据库。

谁能告诉我为什么要这样做?还有如果有什么办法 我们只能删除一个没有提到的外部表 丢失其他数据。

ALTER TABLE TABLENAME set tblproperties('EXTERNAL' = 'FALSE');
 drop table tablename;

最佳答案

当您在 Hive 中删除托管表时,它与数据文件的位置也会被删除。从技术上讲,可以在同一位置创建许多表,包括托管表和外部表,请参阅 answer所以,这样的场景是很有可能的。使用相同位置创建的其他一些表也将被清空。实际上,Hive 中的数据和表是松散连接的东西。 Hive 中的表是关于位置、模式、SerDe、统计信息、访问权限等的元存储信息。数据存储在 HDFS/S3 或其他兼容的文件系统中。您可以使用一些其他方式来删除数据或加载数据,例如 hadoop fs -rm 命令,而不仅仅是 Hive 中的托管表。

关于java - 将配置单元外部表更改为同一数据库中的内部表也会删除另一个表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54430494/

相关文章:

apache-spark - 将Spark Dataframe写入HDP2.6中的Hive可访问表

python - 什么是从hadoop导出数据到Oracle句柄删除且停机时间最短的有效方法?

java - a[2] = a[a.length] 删除数组 a 中的 2 个

java - 如何避免 JSObject 实现中的内部 Nashorn 类

java - RxJava 调度程序始终与 sleep 在同一线程中工作

java - 如何在循环中使用paintComponent?

文件缓存选项

hadoop - 执行 spark 作业时出现 FileNotFoundException

hadoop - 无法有效映射 HIVe 表中的 HBase 行键

mysql - Hive 按播放次数查找前 n 个页面