thrift在hive中的应用

系统 2582 0

thrift在hive中的应用 » ORATEA

thrift是一种可伸缩的跨语言服务的发展软件框架。

它结合了功能强大的软件堆栈的代码生成引擎,以建设服务,工作效率和无缝地与C + +,C#,Java,Python和PHP和Ruby结合。

thrift是facebook开发的,我们现在把它作为开源软件使用。thrift允许你定义一个简单的定义文件中的数据类型和服务接口。

以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。

对于thrift的详细介绍见: http://thrift.apache.org/

thrift在hive中有好几处应用,目的都是为了实现跨语言的服务。

最近详细的看了在metadata模块中的thrift应用。

metadata中thrift定义文件为\hive-0.6.0\src\metastore\if\hive_metastore.thrift,

该文件详细定义了hive元数据的各个结构,以及相应的方法。

还是拿database来举例,对于database的结构定义如:

struct Database {

  1: string name,

  2: string description,

  3: string locationUri,

}

对database的方法定义在service ThriftHiveMetastore extends fb303.FacebookService中,主要有以下几个:

  void create_database(1:Database database) throws(1:AlreadyExistsException o1, 2:InvalidObjectException o2, 3:MetaException o3)

  Database get_database(1:string name) throws(1:NoSuchObjectException o1, 2:MetaException o2)

  void drop_database(1:string name, 2:bool deleteData) throws(1:NoSuchObjectException o1, 2:InvalidOperationException o2, 3:MetaException o3)

  list<string> get_databases(1:string pattern) throws(1:MetaException o1)

  list<string> get_all_databases() throws(1:MetaException o1)

 

定义好了metadata的thrift文件后,就可以通过thrift产生相应的脚本文件,

在build.xml中对于该编译命令为:

  <target name=”thriftif”>

    <echo>Executing thrift (which needs to be in your path) to build java metastore APIs…. </echo>

    <exec executable=”thrift”  failonerror=”true” dir=”.”>

      <arg line=”–gen java:beans –gen cpp –gen php –gen py -I ${basedir}/../service/include/ -o ${src.dir} if/hive_metastore.thrift ” />

    </exec>

  </target>

 

当然我们也可以手工进行:

thrift –gen java:beans –gen cpp –gen php –gen py -I ${basedir}/../service/include/ -o ${src.dir} if/hive_metastore.thrift

执行后就会产生

drwxr-xr-x 2 hjl hjl   4096 May 27 08:25 gen-cpp

drwxrwxr-x 3 hjl hjl   4096 May 27 08:27 gen-javabean

drwxr-xr-x 3 hjl hjl   4096 May 27 08:25 gen-php

drwxr-xr-x 3 hjl hjl   4096 May 27 08:25 gen-py

下面几个脚本,对应着c++,java,php和python。

hive-0.6.0中使用的thrift版本为r790732,如果使用相同的thrift版本会产生和官方hive版本相同的文件,

而采用不同版本的thrfit的话,那么产生的各种文件会有些差距。

thrift在hive中的应用


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论