使用 Hive 进行 MapReduce 上的 SQL
介绍
Hive 是当今Hadoop生态系统中最受欢迎、最普遍的成员。
随着大数据应用的日益普及,MapReduce已成为在商用硬件上执行批处理的标准。然而,对于开发人员来说,编写 MapReduce 代码可能颇具挑战性,更不用说数据科学家和管理员了。
Hive 是一个在 Hadoop 上运行的数据仓库框架,为 MapReduce 应用提供 SQL 抽象。数据分析师和商业智能官员无需学习另一种复杂的编程语言即可编写 MapReduce 应用。Hive 会自动将任何 SQL 查询解释为一系列 MapReduce 作业。
Hive 架构
上图展示了 Hive 架构的重要组成部分。SQL 查询通过以下过程转换为 MapReduce 应用程序:
- Hive 客户端或UI向驱动程序提交查询。
- 然后,驱动程序将查询提交给 Hive编译器,后者生成查询计划并将 SQL 转换为 MapReduce 任务。
- 编译器与包含数据架构的Hive 元存储进行通信。任何 DDL 任务也都是通过连接到元存储来执行的。
- 然后,执行引擎将作业提交给 Hadoop 进行处理。
- Hadoop 使用 Hive SerDe(即序列化器/反序列化器)来将输入格式转换为 Hive 行对象或从 Hive 行对象转换输入格式。
- 最后,通过 UI 检索结果。
运行 Hive 作业
运行 Hive 查询需要一些 SQL 经验,因为 HiveQL 查询与 SQL 查询几乎没有区别。
要连接到 Hive 会话,请运行以下命令:
beeline -u jdbc:hive2://<ip>:10000/ -n <username>
默认的 Hive CLI 客户端称为beeline。它使用特定用户连接到 JDBC URL,该用户使用 HDFS 和操作系统中定义的用户来管理权限。
然后,您可以从 beeline 会话运行连接到 HDFS 位置或 Hive 支持的任何其他位置的 SQL 脚本。以下代码块是从连接到 Amazon S3 的Amazon Customer Reviews Open Dataset中获取的 DDL 语句的示例。
CREATE EXTERNAL TABLE amazon_reviews_parquet(
marketplace string,
customer_id string,
review_id string,
product_id string,
product_parent string,
product_title string,
star_rating int,
helpful_votes int,
total_votes int,
vine string,
verified_purchase string,
review_headline string,
review_body string,
review_date bigint,
year int)
PARTITIONED BY (product_category string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.ql.io.parquet.serde.ParquetHiveSerDe'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.parquet.MapredParquetOutputFormat'
LOCATION
's3://amazon-reviews-pds/parquet/'
EXTERNAL TABLE关键字指定表将不受内置 HDFS hive用户管理。当将数据存储在 Hive 所运行的集群之外,甚至存储在不属于hive用户的目录中时,外部表是必需的。
尽管已写入架构定义,但 Hive 不会检查对该位置的写入。这是因为 Hive 遵循读取时架构的原则。架构是在 Hive 从源读取数据时应用的,而不是在插入数据时应用的。这允许读取更复杂的文件类型,例如本示例中使用的 Parquet 文件类型。Hive 还可用于通过 CSV SerDe 读取 CSV 文件,通过 RegEx SerDe 读取复杂文本文件,甚至通过自定义 SerDes 和InputFormats读取二进制文件。
结论
简单的 SQL 聚合、连接和窗口函数可以在大规模运行时提供宝贵的见解。Hive 是 Hadoop 生态系统的众多成员之一。它是一个非常简单但功能强大的工具,可以使用熟悉的语言对 PB 级数据进行分析。由于 Hive 是 Hadoop 生态系统中最常部署的成员之一,因此数据工程师和数据分析师必须了解这些基本概念。
免责声明:本内容来源于第三方作者授权、网友推荐或互联网整理,旨在为广大用户提供学习与参考之用。所有文本和图片版权归原创网站或作者本人所有,其观点并不代表本站立场。如有任何版权侵犯或转载不当之情况,请与我们取得联系,我们将尽快进行相关处理与修改。感谢您的理解与支持!
请先 登录后发表评论 ~