Hbase 来自hdfs的Hadoop配置单元查询文件

Hbase 来自hdfs的Hadoop配置单元查询文件,hbase,hive,hdfs,Hbase,Hive,Hdfs,如果我在HDFS之上构建配置单元,我是否需要在处理它们之前将所有文件放入配置单元/仓库文件夹中?我可以通过配置单元查询hdfs中的任何文件吗?如何操作?在配置单元中创建表时,默认情况下,配置单元将管理数据,这意味着配置单元将数据移动到其仓库目录中。或者,您可以创建一个外部表,该表告诉配置单元引用位于仓库目录外现有位置的数据 CREATE EXTERNAL TABLE external_table (dummy STRING) LOCATION '/user/external_table'; LO

如果我在HDFS之上构建配置单元,我是否需要在处理它们之前将所有文件放入配置单元/仓库文件夹中?我可以通过配置单元查询hdfs中的任何文件吗?如何操作?

在配置单元中创建表时,默认情况下,配置单元将管理数据,这意味着配置单元将数据移动到其仓库目录中。或者,您可以创建一个
外部表
,该表告诉配置单元引用位于仓库目录外现有位置的数据

CREATE EXTERNAL TABLE external_table (dummy STRING)
LOCATION '/user/external_table';
LOAD DATA INPATH '/user/data.txt' INTO TABLE external_table;

为了在现有HDFS集群上运行Hive,您不必做任何特殊的事情。这是由于蜂巢的结构。配置单元默认在HDFS上运行

在处理文件之前,我是否需要将所有文件放入hive/warehouse文件夹?

你也不必这么做

当您创建配置单元表并使用load命令将数据从文件加载到配置单元表中时,基础文件将自动移动到配置单元仓库中。你不必明确地做任何事情。但这是有代价的。如果删除这样的表,您的文件将被删除。这些类型的文件在配置单元术语中称为托管表

为了解决这个问题,您可以使用配置单元支持的另一种表类型,外部表。创建外部表并将数据加载到其中时,基本文件不会移动到仓库中。只有与该表关联的元数据被添加到配置单元元存储。删除此表时,只有元数据从元存储中删除,而不删除基文件。创建外部表时,只需通过location子句指定基文件的位置

我可以通过配置单元查询hdfs中的任何文件吗?怎么做?

对。在LOCATION子句的帮助下,创建一个引用此文件的外部表。然后,您可以像查询任何其他配置单元表一样查询此文件中的数据


希望这能回答您的问题。

如果我更新文件,它们是在更新的数据上运行,还是在创建配置单元表后加载的初始数据上运行?两个基地都发生了什么?你的“数据”不会被移动或复制。外部表只是存储在hive warehouse中的“元数据”,但您的数据保留在您的文件中。因此,您的数据将始终保持新鲜!