一.Hive的Java客户端

JDBC工具类:JDBCUtils.java

package demo.jdbc;

import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement; //工具类:(1)获取数据库的链接 (2)释放数据库资源
public class JDBCUtils { //Hive驱动
private static String driver = "org.apache.hive.jdbc.HiveDriver"; //Hive的位置
private static String url = "jdbc:hive2://192.168.153.11:10000/default"; //注册数据库的驱动:Java的反射
static{
try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
throw new ExceptionInInitializerError(e);
}
} //获取数据库链接
public static java.sql.Connection getConnection(){
try {
return DriverManager.getConnection(url);
} catch (SQLException e) {
e.printStackTrace();
}
return null;
} //释放资源
public static void release(java.sql.Connection conn,Statement st,ResultSet rs){
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
rs = null;
}
} if(st != null){
try {
st.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
st = null;
}
} if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}finally{
conn = null;
}
}
}
}

DemoTest.java

package demo.jdbc;

import java.sql.ResultSet;
import java.sql.Statement; public class DemoTest { public static void main(String[] args) {
String sql = "select * from emp1"; java.sql.Connection conn = null;
Statement st = null;
ResultSet rs = null;
try {
conn = JDBCUtils.getConnection();
//得到SQL的运行环境
st = conn.createStatement();
//ִ执行SQL
rs = st.executeQuery(sql); while (rs.next()) {
//姓名 薪水
String name = rs.getString("ename");
double sal = rs.getDouble("sal");
System.out.println(name + "\t" +sal);
}
}catch(Exception e){
e.printStackTrace();
}finally {
JDBCUtils.release(conn, st, rs);
}
}
}

启动HiveServer:hiveserver2,会报错:

java.lang.RuntimeException: org.apache.hadoop.ipc.RemoteException:User:
root is not allowed to impersonate anonymous
在老版本的Hive中,是没有这个问题的

解决:

把Hadoop HDFS的访问用户(代理用户) ---> *
core-site.xml

<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property> <property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>

二.Hive的自定义函数

例子:

1.concat 拼加两个字符串

package udf;

import org.apache.hadoop.hive.ql.exec.UDF;

/**
* 实现关系型数据库中的concat函数:拼加字符串
* 需要继承的类:UDF
*
*/
public class MyConcatString extends UDF{ //必须重写一个方法,方法名叫: evaluate
public String evaluate(String a,String b){
return a + "*************"+b;
}
}

2.判断员工工资的级别

package udf;

import org.apache.hadoop.hive.ql.exec.UDF;

/**
* 根据员工薪水判断级别
*
*/
public class CheckSalaryGrade extends UDF{
public String evaluate(String salary){
int sal = Integer.parseInt(salary); if (sal<1000) {
return "Grade A";
}else if (sal>=1000 && sal<3000) {
return "Grade B";
}else {
return "Grade C";
}
}
}

3、打包
将jar包加入hive的classpath
在hive命令行执行:add jar /root/temp/myudf.jar;

创建别名(函数名称)
create temporary function myconcat as 'demo.udf.MyConcatString';
create temporary function checksal as 'demo.udf.CheckSalaryGrade';

结果:

大数据笔记(十六)——Hive的客户端及自定义函数的更多相关文章

  1. 大数据笔记(六)——HDFS的底层原理:JAVA动态代理和RPC

    一.Java的动态代理对象 实现代码如下: 1.接口类MyService package hdfs.proxy; public interface MyService { public void me ...

  2. 大数据工具篇之Hive与MySQL整合完整教程

    大数据工具篇之Hive与MySQL整合完整教程 一.引言 Hive元数据存储可以放到RDBMS数据库中,本文以Hive与MySQL数据库的整合为目标,详细说明Hive与MySQL的整合方法. 二.安装 ...

  3. 跟上节奏 大数据时代十大必备IT技能

    跟上节奏 大数据时代十大必备IT技能 新的想法诞生新的技术,从而造出许多新词,云计算.大数据.BYOD.社交媒体……在互联网时代,各种新词层出不穷,让人应接不暇.这些新的技术,这些新兴应用和对应的IT ...

  4. 大数据工具篇之Hive与HBase整合完整教程

    大数据工具篇之Hive与HBase整合完整教程 一.引言 最近的一次培训,用户特意提到Hadoop环境下HDFS中存储的文件如何才能导入到HBase,关于这部分基于HBase Java API的写入方 ...

  5. 大数据应用之Windows平台Hbase客户端Eclipse开发环境搭建

    大数据应用之Windows平台Hbase客户端Eclipse开发环境搭建 大数据应用之Windows平台Hbase客户端Eclipse环境搭建-Java版 作者:张子良 版权所有,转载请注明出处 引子 ...

  6. 大数据系列之数据仓库Hive安装

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  7. CentOS6安装各种大数据软件 第六章:HBase分布式集群的配置

    相关文章链接 CentOS6安装各种大数据软件 第一章:各个软件版本介绍 CentOS6安装各种大数据软件 第二章:Linux各个软件启动命令 CentOS6安装各种大数据软件 第三章:Linux基础 ...

  8. 大数据系列之数据仓库Hive命令使用及JDBC连接

    Hive系列博文,持续更新~~~ 大数据系列之数据仓库Hive原理 大数据系列之数据仓库Hive安装 大数据系列之数据仓库Hive中分区Partition如何使用 大数据系列之数据仓库Hive命令使用 ...

  9. python3.4学习笔记(十六) windows下面安装easy_install和pip教程

    python3.4学习笔记(十六) windows下面安装easy_install和pip教程 easy_install和pip都是用来下载安装Python一个公共资源库PyPI的相关资源包的 首先安 ...

随机推荐

  1. switch条件变量的取值类型

    switch条件变量的取值类型主要有以下六种: 1)JDK1.5(不含JDK1.5)之前只能是byte.short.int.char类型,不能是float.double.long.boolean类型. ...

  2. windows下安装mysql8并修改密码

    MySQL下载地址:http://dev.mysql.com/downloads/mysql/ Windows下安装MySQL 我下的是最新版的MySQL,解压后,目录如下: 1.进入dos的命令行, ...

  3. JZOJ2678 树B

    题 Description 已知无向连通图G由N个点,N-1条边组成.每条边的边权给定.现要求通过删除一些边,将节点1与另M个指定节点分开,希望删除的边的权值和尽量小,求此最小代价. Input 每个 ...

  4. 工作笔记之20170223:①关于Html5的placeholder属性,②以及input的outline:none的样式问题

    关于这边几个样式问题,重点有这么几个: (1)placeholder="请输入密码" (2) color:#BEB6B6; border:0px; border-bottom:1p ...

  5. java体系中OOP,OOD,OOA分别代表什么含义,以及OA,CRM,ERP

    OOP:Object Oriented Programming 面向对象程序设计. OOD:Object Oriented Design 面向对象设计. OOA:Object Oriented Ana ...

  6. 广播即时通信src和des

    package 第十二章; import java.io.IOException; import java.net.DatagramPacket; import java.net.InetAddres ...

  7. Python webdriver调用Chrome报错

    报错信息如下: selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to b ...

  8. vuex深入

    多模块  http://www.php.cn/js-tutorial-385084.html Vuex 模块化+命名空间后, 如何调用其他模块的 state, actions, mutations, ...

  9. vue+element ui 时间格式化

    <el-table-column prop="startTime" label="日期" width="200" align=&quo ...

  10. BloomFilter&python支持

    BloomFilter&python支持 BloomFilter 布隆过滤器是一种概率空间高效的数据结构.它与hashmap非常相似,用于检索一个元素是否在一个集合中.它在检索元素是否存在时, ...