Hive的Java API 和 数据分析引擎Pig的数据模型 安装和配置, Pig的自定义函数

Hive的Java API

1、基于JDBC的方式(推荐)

(*) 使用的驱动

private static String driver = "org.apache.hive.jdbc.HiveDriver";

(*) 启动HIve的server

hiveserver2 & ----> 表示后台启动

(*) 错误

Caused by: java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException:User:

root is not allowed to impersonate anonymous

(*) Hive的老版本没有这个问题

(*)修改Hadoop的配置文件 core-site.xml

 

<property>

<name>hadoop.proxyuser.root.hosts</name>

<value>*</value>

</property>

<property>

<name>hadoop.proxyuser.root.groups</name>

<value>*</value>

</property>

2、Thrift Client(不推荐)

(*) 老版本的Hive:编程比较简单

(*) 高版本的Hive:编程接口很复杂

 

 

三、Hive的自定义函数(UDF: user defined function): 本质就是一个Java程序,封装我们的业务逻辑

1、案例一:实现concat函数,拼加两个字符串

2、案例二:根据员工的薪水,判断薪水的级别

将jar包加入classpath

add jar /root/temp/udf.jar;

创建一个别名(临时函数)来代表自定义函数

create temporary function myconcat as 'demo.udf.MyConcatString';

create temporary function checksalary as 'demo.udf.CheckSalaryGrade';

 

 

 

四、数据分析引擎:Pig 还有一个就是他

1、最早是Yahoo开发的,后来给了Apache

2、支持PigLatin语句,类似SQL

3、也是一个翻译器,PigLatin语句 -----> MapReduce

 

 

五、Pig的数据模型

 

六、安装和配置Pig

解压: tar -zxvf pig-0.17.0.tar.gz -C ~/training/

设置环境变量

export PIG_HOME=/root/training/pig-0.17.0

export PATH=$PIG_HOME/bin:$PATH

export JAVA_HOME=/root/training/jdk1.8.0_144

 

两种运行模式

1、本地模式: 操作的是Linux文件系统

启动: pig -x local

日志: Connecting to hadoop file system at: file: ///

 

2、集群模式:链接到Hadoop进行操作

配置:设置一个环境变量 PIG_CLASSPATH 指向Hadoop配置文件所在的目录

export PIG_CLASSPATH=/root/training/hadoop-2.7.3/etc/hadoop

启动: pig

日志:Connecting to hadoop file system at: hdfs://192.168.157.111:9000

七、Pig的常用命令:参考P54页

1、效率比直接执行HDFS的命令高

2、sh命令:在Pig的集群模式下,执行操作系统的命令

3、Pig的自定义函数的命令: register(注册jar包), define(创建别名)

 

加 sh pwd 列出来的是当前linux 系统的路径

emp= load 'emp.csv'; dump之后才会执行。

dump emp;

八、使用PigLatin语句分析数据

1、启动HistoryServer

2、常用的PigLatin语句

(*) load: 加载数据到表中(bag)

(*) foreach:对表中的每一条数据tuple进行处理

(*) filter: 相当于where

(*) group by

(*) join : 连接(多表查询)

(*) generate: 提取列

(*) union/intersect:集合运算

(*) 输出:dump 直接打印在屏幕

store 输出到HDFS

第一步对数据读取 成 数组 line : chararray TOCKENIZE(line)成数组

先是数组 ,然后压平flatten

dump words;

 

 

http://pig.apache.org/docs/r0.17.0/basic.html

 

mr-jobhistory-daemon.sh start historyserver 启动jobhistoryserver

19888 历史

3、(注意1) Spark中API(算子)方法,跟PigLatin非常类似

(注意2) PigLatin语句:load foreach filter,group by,generate 等等 -----> 不会触发计算

dump, store ------> 会触发计算

Spark中的算子:(第一类)Transformation算子 -----> 不会触发计算

(第二类)Action算子 ------> 会触发计算

4、举例:

创建表bag,保存员工信息

emp = load '/scott/emp.csv'; ----> 会生成一个新的表bag, 不会触发计算

输出数据

dump emp; ----> 触发了一个计算 pig 查询

查看表结构

describe emp;

Schema for emp unknown.

因为 还未指定 tuple行和列 对应的数据类型

hive metastore 服务端启动命令:

hive --service metastore -p <port_num>

如果不加端口默认启动:hive --service metastore,则默认监听端口是:9083 ,注意客户端中的端口配置需要和启动监听的端口一致。服务端启动正常后,客户端就可以执行hive操作了。

hiveserver2 &

============hadoop 和 pig的区别================

相同点:

运行Hadoop之上,设计动机是为用户提供一种更简单的Hadoop 上数据分析方式。

解决相同问题的两个工具Yahoo 与facebook

不同点:

Hive 要求处理数据必须有schema,而Pig 则无此要求

Hive 有server 需要安装,Pig 无server 不需要安装

编程语言不同,HQL与Pig Latin

HQL:得到什么样的结果,过程化语言

PigLatin:如何处理数据,数据流语言

 

Pig 通常结合Oozie:

 

Ooize 是什么:(1) 作业流调度系统

 

(2)根据配置对作业进行周期调度或者定时调度

 

(3)同时支持Mapreduce,Hive,Pig 等

 

(4)包含监控,预警等功能

 

怎样让Ooize 调度Pig作业:(1)Ooize 将作业封装成了action

 

(2)可让Pig 作业与Mapreduce ,Sqoop 等连用

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值