数据存储在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命令,它将为您将文件放入表位置,您无需知道位置路径。
1条答案
按热度按时间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
命令,它将为您将文件放入表位置,您无需知道位置路径。