14.5.2 Zebra的使用简介
从图14-3中我们可以看出,Zebra支持Pig、MapReduce以及Streaming三种方式。在本节中,我们主要介绍如何使用Pig来调用Zebra进行数据的读写,其他相关部分大家可以从Zebra官方网站[1]上查阅。
Zebra的读写需要首先声明存储模式。Zebra提供了与Pig之间模式的自动转换,因此我们在使用Pig对Zebra进行操作的时候不需要指定模式。
下面介绍如何使用Zebra提供的类加载数据。在加载数据时需要使用Zebra的TableLoader类,该类包含两个构造函数,如下所示:
TableLoader()
TableLoader(String projectionStr)
如果使用“TableLoader()”构造函数,Zebra将自动识别数据的列,并为其指定模式:或者可以使用第二种构造函数,其中,参数“projectionStr”指定的是投影字符串,用“,”分割被投影的字段。
下面操作将从表“student”中加载数据:
register$LOCATION/zebra-$version.jar;
A=LOAD'studenttab'USING org.apache.hadoop.zebra.pig.TableLoader();
可以看到与使用UDFs类似,在使用之前首先需要使用register语句将相应的JAR包注册。
我们可以使用DESCRIBE语句来查看表的模式:
DESCRIBE A;
A:{name:chararray, age:int, gpa:float}
另外,可以在加载数据的时候利用Zebra将其进行排序:
A=LOAD'studentsortedtab'USING org.apache.hadoop.zebra.pig.TableLoader('','sorted');
如上所示,将TableLoader的第一个参数设置为空代表加载所有的列。有序的表能够加快Merge Join的操作。
限于篇幅,这里我们介绍了简单的Zebra和Pig的交互操作,其他更多内容大家可以查看Zebra的JAVA API。
[1]http://pig.apache.org/docs/r0.9.2/zebra_overview.html。