Hive APIs 概览--官网中文翻译

目录

API 类型

基于操作的API

基于查询的API

可用的API

HCatClient (Java)

 

HCatalog存储处理程序(Java)

HiveServer2 API

HCatalog CLI(命令行)

 

Metastore (Java)

Hive (Java)

Driver (Java)

WebHCat (REST)

Streaming Data Ingest (Java)

Streaming Mutation (Java)


本页面旨在对Hive公开的各种面向公众的api进行分类和描述,以便通知希望将其应用程序和框架集成到Hive生态系统中的开发人员。到目前为止,Hive项目中已经确定了以下api,它们要么被认为是公共的,要么在公共领域中被广泛使用:

API 类型

这些api可以划分为两个概念类别:基于操作的api和基于查询的api。

 

基于操作的API

基于操作的api公开了许多严格限定范围的方法,每个方法实现一个非常特定的Hive操作。这些方法通常接受并返回与其各自操作相适应的强类型值。这些操作的实现通常针对Hive中非常特定的层或子系统,因此很可能在使用中非常有效。但是,操作的结果可能与等效HQL的结果不同,因为在每种情况下可能调用不同的代码路径。基于操作的api用于构建流程,这些流程需要以重复的声明性方式进行交互,并提供更大程度的编译时检查。

 

基于查询的API

基于查询的api允许提交和执行HQL的某些子集。API客户机通常需要解析和解释任何返回值,因为返回类型的范围通常非常广泛。这些api的实现通常针对Hive的“查询语言”子系统,该子系统解析查询并根据需要执行查询。考虑到大多数基于查询的API共享一个类似的执行路径,通过API提交的任何操作都可能具有与通过Hive CLI提交的等效HQL类似的结果。基于查询的API通常用于构造动态创建Hive API操作的流程,或者在重要的HQL等效结果的地方。这类API的缺点包括:缺乏编译时检查、在更高抽象级别工作时可能的效率低下,以及对类似sql注入攻击的潜在易感性。

 

可用的API

HCatClient (Java)

基于操作的Java API,它提供了许多DDL类型的操作,但是它不如Metastore API全面。HCatClient原本打算成为基于Java的WebHCat HCatalog API的入口点,尽管这从未实现过。目前HCatClientHMSImpl是该API唯一的具体实现;它使用Metastore API直接与Metastore集成,并且不使用WebHCat,尽管它被打包在WebHCat项目中。HCatClientHMSImpl最初是作为一个参考实现提供的,但是随着时间的推移,它作为一个公共客户端获得了越来越多的关注。有趣的是,它现在是从外部程序发出DDL类型操作的首选API;并鼓励特性贡献。HCatalog wiki上有一些很小的文档,它们以设计文档的形式描述接口,而不是实现。

 

HCatalog存储处理程序(Java)

基于操作的Java API。这在wiki上有很好的文档。

 

HiveServer2 API

 

HCatalog CLI(命令行)

基于操作的Java API。这在wiki上有很好的文档。

 

Metastore (Java)


IMetaStoreClient接口描述了一个基于Thrift 操作的API,带有Java绑定。该API将metastore 存储层从其他Hive内部解耦。因为Hive本身在内部使用这个特性,所以需要实现一个全面的特性集,这使得它对那些可能发现其他api缺乏的开发人员具有吸引力。它最初并不打算成为一个公共API,尽管它在1.0.0版本(HIVE-3280)中成为公共API,并且有人建议对它进行更全面的文档化(HIVE-9363)。有趣的是,目前不推荐在Hive项目之外使用它。

 

Hive (Java)

参考org.apache.hadoop. hive.qm .metadata.Hive class. 似乎是一个独特的具体实现metastore API的变种。委托给metastore API,但不直接扩展/实现它。

 

Driver (Java)

基于查询的API与Java端点。引用org.apache.hadoop.hive.ql.Driver class.

 

WebHCat (REST)

WebHCat是一个基于REST操作的HCatalog API。这在wiki上有很好的文档。

 

Streaming Data Ingest (Java)

基于Java API的操作侧重于使用Hive的ACID特性将连续的数据流写入事务表。使用小批量和短期事务将新数据插入表中。在wiki上记录,并具有包级别Javadoc。在Hive版本0.13.0 (Hive -5687)中引入。

 

Streaming Mutation (Java)

基于Java API的操作关注于使用Hive的ACID特性将(插入/更新/删除)记录更改为事务表。在一个长生命周期的事务中,大量的突变被原子性地应用。记录在wiki上。计划在Hive版本2.0.0 (Hive -10165)中发布。

参考:

https://cwiki.apache.org/confluence/display/Hive/Hive+APIs+Overview

你可能感兴趣的:(Hive,大数据)