我的HDFS中有.csv格式的1 TB数据。当我在Hive表中加载它时,数据的总大小。我的意思是会有2个相同数据的副本,即HDFS中的1个副本和Hive表中的其他副本吗? Plz澄清。提前谢谢。
答案 0 :(得分:0)
这取决于您是否在Hive中创建内部表或外部表。
如果您在Hive中创建外部表,它将创建一个映射数据存储在HDFS中的位置,并且根本不会有任何重复。 Hive将自动选择存储在HDFS中的数据。
在此处阅读有关外部表格的更多信息:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-ExternalTables
答案 1 :(得分:0)
如果您创建配置单元外部表,则为表提供HDFS位置,并将该数据存储到该特定位置。
创建配置单元内部表配置单元时,在/apps/hive/warehouse/
目录中创建一个目录。
比如说,您的表名是table1
,那么您的目录将是/apps/hive/warehouse/table1
此目录也是一个HDFS目录,当您将数据加载到表中的内部表时,它将进入其目录。
Hive在表及其对应的HDFS位置之间创建映射,因此当您从相应的映射目录读取数据时,它就会被读取。
因此,不会有与表及其HDFS位置对应的数据的重复副本。
但是,如果您的Hadoop集群Data Replication
因子设置为3(默认复制),那么它将占用3TB集群磁盘空间(因为您有1TB数据),但不会对您的hive表数据产生任何影响。
请参阅以下链接,了解有关数据复制的更多信息。
http://hadoop.apache.org/docs/r1.2.1/hdfs_design.html#Data+Replication