我正在使用hive v0.13
我的数据存储在hdfs中,我使用create "CREATE external TABLE"
为这些数据创建一个表。一切正常,我可以发出"select"
个陈述。问题出在仓库目录(hive.metastore.warehouse.dir)
下,我没有看到任何files/data
被添加,这是正常的吗?我知道"external"
表数据不会复制到仓库目录,但不应该存储表元数据吗?
答案 0 :(得分:0)
创建内部表时,配置单元会在hive.metastore.warehouse.dir
中指定的目录下创建一个包含表名的目录。对我而言/apps/hive/warehouse.
假设您已经创建了一个表名test_tbl
,那么将有一个目录/apps/hive/warehouse/test_tbl
和hive将元数据存储到mysql或您配置的RDBMS中以存储元数据。当您使用{{1}加载数据时命令进入这个目录。
但是在LOAD DATA INPATH
中您在create语句中指定了一个位置,因此hive不会在默认仓库目录中创建任何目录,因为您已经提供了该位置。它只是在external table
您可以使用RDBMS
命令直接将数据加载到该位置,而hive会将该数据视为与该特定目录关联的表。因此,它是外部表的预期行为。
答案 1 :(得分:0)
创建外部表时元数据将存储在RDBMS中,即在Metastore数据库中,您插入或加载的数据将存储在目录中。
当您在任何表上查询时,它是外部或托管表元数据将始终位于RDBMS中,实际上将从Metastore获取表模式,而来自HDFS的数据将使用数据和显示来评估模式。
因此,不会在仓库中为外部表创建任何元数据。