HDFS 有关Apache HIVE的信息

fruv7luv  于 2022-12-09  发布在  HDFS
关注(0)|答案(1)|浏览(173)

所以我试着更好地理解Hive。我在以前的角色中曾短暂地使用过它,但我从来没有完全弄清楚它。我的问题是:
HIVE是否也用于数据存储,或者严格地说是作为一种在Hadoop集群上查询数据的手段?换句话说,数据是否需要在查询之前移动到HIVE数据库/环境?或者HIVE是否可以用于直接查询Hadoop集群?
谢谢你!

x8diyxa7

x8diyxa71#

**简短回答:**配置单元不是数据存储,它可以使用表从存储中查询数据(模式定义、用于数据序列化/反序列化的SerDe和数据位置在create-table语句中定义)。
详细答案:

数据存储在HDFS或其他Hadoop compatible filesystem(如S3)中(可与Hadoop集群完全分离)。
配置单元是一个数据库:它具有丰富的SQL(DDL和DML)、元数据(包括统计信息和表定义)、访问赠款、基于成本的优化器,并且可以使用不同的查询引擎:MR(MapReduce)和Tez。Hive与传统RDBMS的不同之处在于Hive使用了模式读取概念:数据的存储方式和读取方式完全不相关,在读取数据时应用模式,数据文件可以通过某个外部进程添加到HDFS中。
Hive可以读取不同的结构化文件(如JSON,Avro,CSV,Parquet,ORC等)以及半结构化文件(使用RegexSerDe或任何其他,甚至自定义SerDe)。Hive还可以连接到其他JDBC源,以方便集成和读/写。
在配置单元中,表或分区是HDFS中的一个位置,存储数据文件+包含模式定义、SerDe、统计信息、访问赠款的元数据
您可以在某个现有位置上创建表,甚至可以在同一位置上创建多个表(即使使用不同的模式)。请阅读关于multiple tables on top of the same location的答案和以下答案:https://stackoverflow.com/a/54242477/2700344关于托管/外部表。
您可以使用HDFS命令直接将文件放入表位置或删除文件,这将反映在Hive返回的数据集中,还支持LOAD INTO TABLE命令,它将为您将文件放入表位置,您无需知道位置路径。

相关问题