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:AlreadyExist