Hadoop 使用hive中的数据测量负载表的时间(可能吗?)

Hadoop 使用hive中的数据测量负载表的时间(可能吗?),hadoop,hive,Hadoop,Hive,我使用以下命令从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的容量。创建表只需1秒就可以创建表并加载数据。所以

我使用以下命令从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的容量。创建表只需1秒就可以创建表并加载数据。所以这很奇怪,或者它真的很快。我的疑问是,用hive中的数据检查加载表的时间是否可以用上面的带位置的命令?或者该命令只是创建对存储在hdfs中的数据的引用

那么,检查配置单元表中加载数据的时间的正确方法是什么


因为1秒看起来非常快,mysql或其他关系数据库可能需要30分钟或更长时间才能将10gb的数据加载到表中。

您的create table语句指向表的外部存储,因此Hive没有通过该语句复制数据。外部表的解释如下:

外部表格

EXTERNAL关键字允许您创建表并提供位置,以便 该配置单元不使用此表的默认位置。这是 如果您已经生成了数据,那么这将非常方便。当丢弃外部 表中的数据不会从文件系统中删除

外部表指向其存储的任何HDFS位置,而不是 而不是存储在配置属性指定的文件夹中 hive.metastore.warehouse.dir


这不是100%明确的,但其思想是配置单元指向表内容,而不是直接管理表内容。

您的create table语句指向表的外部存储,因此配置单元没有复制数据。外部表的解释如下:

外部表格

EXTERNAL关键字允许您创建表并提供位置,以便 该配置单元不使用此表的默认位置。这是 如果您已经生成了数据,那么这将非常方便。当丢弃外部 表中的数据不会从文件系统中删除

外部表指向其存储的任何HDFS位置,而不是 而不是存储在配置属性指定的文件夹中 hive.metastore.warehouse.dir


这不是100%明确的,但其思想是Hive指向表内容,而不是直接管理它。

谢谢!我现在更了解外部表的工作原理。那么,为了检查在配置单元表中加载数据的时间,我们不能使用外部数据吗?我们应该改用createtable吗?或者,我们应该首先创建不带位置的表,然后在创建表之后使用“将数据加载到表中”命令?@Jann。您应该为最适合您的应用程序的操作计时。在适当的情况下,这三个都是合理的。谢谢!我现在更了解外部表的工作原理。那么,为了检查在配置单元表中加载数据的时间,我们不能使用外部数据吗?我们应该改用createtable吗?或者,我们应该首先创建不带位置的表,然后在创建表之后使用“将数据加载到表中”命令?@Jann。您应该为最适合您的应用程序的操作计时。在正确的情况下,这三点都是合理的。