我使用以下命令从hdfs中存储的数据中创建了一个表:
create external table users
(ID INT, NAME STRING, ADRESS STRING, EMAIL STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '|' STORED AS TEXTFILE LOCATION '/data/tpch/users';
这个存储在hdfs中的用户表有10gb。并且create table只花了1秒来创建表并加载数据。所以这很奇怪,或者它真的很快。我的疑问是,用hive中的数据检查加载表的时间是否可以使用上面的命令与位置?或者该命令只是创建对hdfs中存储的数据的引用?
那么检查在hive表中加载数据的时间的正确方法是什么?
因为1秒似乎非常快,所以mysql或其他关系数据库可能需要30分钟或更长时间才能将10gb数据加载到表中。
答案 0 :(得分:0)
您的create table语句指向表的外部存储,因此Hive不会复制数据。 documentation解释了这样的外部表:
外部表格
EXTERNAL关键字允许您创建表格并提供LOCATION Hive不使用此表的默认位置。这来了 如果您已经生成了数据,那就派上用场了。当删除外部时 表,表中的数据不会从文件系统中删除。
EXTERNAL表指向其存储的任何HDFS位置 而不是存储在配置属性指定的文件夹中 hive.metastore.warehouse.dir。
这不是100%明确的,但想法是Hive指向表内容而不是直接管理它。