首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >蜂巢MetaStore的主要用途?

蜂巢MetaStore的主要用途?
EN

Stack Overflow用户
提问于 2018-01-31 00:46:49
回答 2查看 1.5K关注 0票数 2

我对MetaStore的目的有点困惑。当您在蜂巢中创建一个表时:

代码语言:javascript
复制
CREATE TABLE <table_name> (column1 data_type, column2 data_type);
LOAD DATA INPATH <HDFS_file_location> INTO table managed_table;

因此,我知道这个命令接受HDFS中文件的内容,并创建它的MetaData表单并将其存储在MetaStore中(包括列类型、列名、它在HDFS中的位置等)。它实际上并没有将数据从HDFS移动到Hive中。

但是存储这个MetaData的目的是什么呢?

例如,当我使用Spark连接到Hive时,MetaStore不包含HDFS中的实际信息,而只包含MetaData。那么,MetaStore是否被Hive简单地用于对HiveQL查询执行解析和编译步骤,并创建MapReduce作业?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-01-31 07:58:15

Metastore用于存储模式(表定义包括HDFS中的位置、serde、列、注释、类型、分区定义、视图、访问权限等)和统计信息。不存在将数据从HDFS移动到Hive的操作,因为Hive表数据存储在HDFS(或其他兼容的文件系统(如S3)中)。您可以在HDFS中的某个位置上定义新表,甚至可以定义几个表,并将文件放入其中。您可以更改现有的表位置或分区位置,所有这些信息都存储在亚稳态中,因此Hive知道如何访问数据。表是在亚稳态中定义的逻辑对象,数据本身只是HDFS中某个位置上的文件。

还请参阅关于Hive查询执行流程(高级)的答案:https://stackoverflow.com/a/45587873/2700344

票数 1
EN

Stack Overflow用户

发布于 2018-01-31 14:13:13

单元执行模式读取操作,这意味着要以某种结构化的方式处理数据(即类似表的对象),所述数据的布局需要在关系结构中进行汇总。

获取HDFS中文件的内容并创建该文件的MetaData表单。

据我所知,创建表时实际上没有读取任何文件。

SparkSQL直接连接到亚稳态。Spark和HiveServer都有自己的查询解析器。这不是亚稳态的一部分。MapReduce/Tez/火花作业也不是由转移处理的。它只是一个关系数据库。如果是Mysql、Postgres或Oracle,您可以轻松地连接到它并检查内容。默认情况下,Hive和Spark都使用嵌入式Derby数据库。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48532787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档