我在S3中有一个内部表和外部表。在HDFS和S3中使用内部表有什么区别?内存表和存储在S3中的外部表有什么区别?如果我在S3中删除外部表,主节点中的元数据将被删除,数据将存在于S3中,那么我如何在删除元数据时访问S3中的数据?
答案 0 :(得分:1)
Hive表,无关紧要内部(托管)或外部可以在S3或HDFS中有位置。表(托管或外部)类型和存储(S3,HDFS)之间没有连接。
托管表和外部表之间的区别在于,当您删除表或分区时,它的文件位置也将被删除。删除外部表或其分区时,将保留位置。仅删除元数据。您可以通过直接读取文件或通过创建Hive表或分区并指定位置来访问S3或HDFS位置中的数据。您甚至可以创建多个指向同一位置的表,无关紧要,S3或HDFS。
HDFS和S3有许多不同之处,例如S3中的最终一致性。请参阅此处有关S3和HDFS差异的信息:https://www.xplenty.com/blog/2014/03/storing-apache-hadoop-data-cloud-hdfs-vs-s3/ 在这里:https://databricks.com/blog/2017/05/31/top-5-reasons-for-choosing-s3-over-hdfs.html
另请参阅有关最终一致性的答案:https://stackoverflow.com/a/42677748/2700344