in comparison to SQL:
- (1)使用缓式评估;
- (2)使用ETL(extract、transform、load)
对于开发人员,直接使用Java APIs可能是乏味或容易出错的,同时也限制了Java程序员在Hadoop上编程的运用灵活性。于是Hadoop提供了两个解决方案(Pig and Hive),使得Hadoop编程变得更加容易。
Pig 是一种编程语言,它简化了Hadoop常见的工作任务。Pig可加载数据、表达转换数据以及存储最终结果。Pig内置的操作使得半结构化数据变得有意义(如日志文件)。同时Pig可扩展使用Java中添加的自定义数据类型并支持数据转换。
基础
Pig 是基于hadoop的一个数据处理框架(MapReduce也是一个基于hadoop的数据处理框架)。
MapReduce 是使用Java进行开发的,Pig有一套自己的数据处理语言,Pig 的数据处理过程要转化为MapReduce来运行(也即Pig是对MapReduce的进一步封装)。
Pig 的数据处理语言是数据流方式的,(MapReduce:Java代码段,还有基于SQL的,也即要么错、要么对,原子操作,不会说,对了一部分)
Pig 的数据类型
- 基本数据类型:int、long、float、double、chararray、bytearray
复合数据类型:Map、Tuple、Bag
Bag 的类型如{(‘age’, 31), (‘name’, ‘张三’)}
安装
Pig 的配置不能更简单;
下载地址:http://www-eu.apache.org/dist/pig/。
下载==》解压==》添加环境变量==》修改相关配置文件;
修改pig/conf/下的配置文件:pig.properties
,增加两行内容:
fs.default.name=hdfs://hadoop0:9000
mapred.job.tracker=hadoop0:9001
和hadoop下的core-site.xml
和mapred-site.xml
配置文件的相关属性保持一致;
关于pig.properties配置文件的两处设置,在进入pig命令行模式下时,会输出如下的启动信息:
2016-03-10 05:17:19,054 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to hadoop file system at: hdfs://hadoop0:9000
2016-03-10 05:17:19,704 [main] INFO org.apache.pig.backend.hadoop.executionengine.HExecutionEngine - Connecting to map-reduce job tracker at: hadoop0:9001