java - 将 hive 外部表更改为同一数据库中的内部表也会从另一个表中删除数据
问题描述
我一直在尝试使用该语句删除一个配置单元外部表
更改表 $tableName 设置 tblproperties('EXTERNAL' = 'FALSE');
在我通过这些属性并执行
删除表表名;
此命令还会从该数据库中的其他配置单元表中删除数据。
请任何人都可以建议我为什么这样做?如果有任何方法我们只能删除提到的一个外部表而不会丢失其他数据。
ALTER TABLE TABLENAME set tblproperties('EXTERNAL' = 'FALSE');
drop table tablename;
解决方案
当您在 Hive 中删除托管表时,它与数据文件的位置也会被删除。并且在技术上可以在同一位置创建许多表,包括托管表和外部表,请参阅此答案所以,这种情况是很有可能的。使用相同位置创建的其他一些表也将被清空。实际上,Hive 中的数据和表是松散连接的东西。Hive 中的表是关于位置、模式、SerDe、统计信息、访问权限等的元存储信息。数据存储在 HDFS/S3 或其他兼容的文件系统中。您可以使用其他方式来删除数据或加载数据,例如hadoop fs -rm
命令,而不仅仅是 Hive 中的托管表。
推荐阅读
- python - 如何清理图像中的文本以供 Tesseract 阅读
- arrays - 是否有控制矢量默认形状的设置?
- javascript - 获取反应导航底部标签的高度
- javascript - 按键返回未定义的对象值
- azure-service-fabric - ServiceFabric EventProcessor 中的 PartitionContext.RuntimeInformation 为空
- postman - 如何在邮递员中断言图像的宽度和高度
- google-apps-script - 如何获取客户将数据从 E5 填充到 K5 所花费的时间?
- fullcalendar - 如何在每个事件中存储附加信息并从 MySQL 数据库中加载?
- swift - 为什么我的注释标注不会出现?标注仅在使用自定义图像作为图钉时有效
- google-sheets - Google 表格数据 Feed 在 JSON 中有额外的列标题