注:图片如果损坏,点击文章链接:https://www.toutiao.com/i6812629187518530052/

可能会有一些截图中会有错误提示,是因为本地的包一直包下载有问题,截完图已经下载好了。

创建包结构

创建一个基础信息类

所有输出到mysql数据库中的自定义MR任务的自定义key均需要实现该抽象类

代码内容,主要是实现org.apache.hadoop.io.WritableComparable类,其它不需要写

创建平台信息类

创建全局配置常数类

后面慢慢添加内容

继续完成PlatformInfoKey,添加构造函数

常数类添加信息

根据给定的参数值,构建多个不同维度的平台维度对象

完成参数验证

然后构建平台信息

添加write和readFields方法

创建compareTo方法

添加get/set、hashCode、toString、equals方法,自动生成就可以

创建信息业务接口和实现类

完成接口

添加实现类

创建一个jdbc的管理器

常数类添加数据库配置

JdbcManager添加jdbc连接

关闭数据库连接

继续完成BaseInfoConverterImpl,添加默认构造函数

添加一个缓存数据类型

继续完成BaseInfoConverterImpl,添加方法创建cache key

创建获取ID的方法

继续编写

添加下面的代码

补全里面的sql语句

添加两个参数

完成getConnection()

完成executeSql

设置参数

添加关闭方法

创建一个UDF,模拟数据库平台数据记录

添加内容

添加evaluate方法

创建一个测试类

创建数据库

create database report
DROP TABLE IF EXISTS `platform`;
CREATE TABLE `platform` (
`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键id',
`platform_name` varchar(45) DEFAULT NULL COMMENT '平台名称',
`platform_version` varchar(10) DEFAULT NULL COMMENT '平台版本',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT COMMENT='平台信息表';

Sql语句

String querySql = "SELECT `id` FROM `platform` WHERE `platform_name` = ? AND `platform_version` = ? order by `id`";
String insertSql = "INSERT INTO `platform`(`platform_name`, `platform_version`) VALUES(?, ?)";

修改配置:

连接本地数据库

运行结果

数据库中

本地测试成功开始打包项目放进集群进行测试

把打包好的jar包改名为hive_udf3.jar放到集群里

进入MySQL中创建report数据库

create database report;

创建表platform

进入hive

把jar包添加到hive当中

可以用list jar 和 delete jar 分别显示jar和删除jar

创建临时函数

create temporary function convert_bl as 'com.xlgl.wzy.hive.udf.PlatformConverterUDF';

我们可以用show_functions查看函数

我们查看已有表的数据

select ename,convert_bl(ename,0) lower_name from emp;

这里报了一个异常

这个问题可能是出在maven给的版本和hive的版本不一样导致可以替换成自己的版本

然后重新打成jar包运行一下

再查询一下

select ename,convert_bl(ename,0) lower_name from emp;

可以在mysql中查看数据

编写Hive的UDF(查询平台数据同时向mysql添加数据)的更多相关文章

  1. mybatis+oracle添加一条数据并返回所添加数据的主键问题

    最近做mybatis+oracle项目的时候解决添加一条数据并返回所添加数据的主键问题 controller层 @RequestMapping("/addplan") public ...

  2. 解决在mysql表中删除自增id数据后,再添加数据时,id不会自增1的问题

    https://blog.csdn.net/shaojunbo24/article/details/50036859 问题:mysql表中删除自增id数据后,再添加数据时,id不会紧接.比如:自增id ...

  3. Android之ListView动态添加数据(SQLiteOpenHelper类添加数据)

    一.SQLiteOpenHelper类: 这次我们通过sqlite来动态添加数据,接下来我们创建一个openHelper.java,在前面sqlite博客中我们已经详细的讲了SQLite的创建及使用等 ...

  4. myecilpse +TOMCAT+web:jsp向mysql添加数据,查询在jsp页面显示

    <%@ page language="java" import="java.util.*" import="com.mysql.jdbc.Dri ...

  5. mysql 添加数据如果数据存在就更新ON DUPLICATE KEY UPDATE和REPLACE INTO

    #下面建立game表,设置name值为唯一索引. CREATE TABLE `game` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar( ...

  6. 用PHP向mysql添加数据

    <?php $name=$_POST['name']; $gender = $_POST['gender']; $age=$_POST['age']; #连接到数据库 $link = mysql ...

  7. 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟

    使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 Sqoop 大数据 Hive HBase ETL 使用Sqoop从MySQL导入数据到Hive和HBase 及近期感悟 基础环境 ...

  8. 教程 | 使用Sqoop从MySQL导入数据到Hive和HBase

    基础环境 sqoop:sqoop-1.4.5+cdh5.3.6+78, hive:hive-0.13.1+cdh5.3.6+397, hbase:hbase-0.98.6+cdh5.3.6+115 S ...

  9. 22.把hive表中数据导入到mysql中

    先通过可视化工具链接mysql,在链接的时候用sqoop 用户登录 在数据库userdb下新建表 保存,输入表名upflow 现在我们需要把hive里面的数据通过sqoop导入到mysql里面 sqo ...

随机推荐

  1. 04 - Vue3 UI Framework - 文档页

    官网的首页做完了,接下来开始做官网的文档页 返回阅读列表点击 这里 路由设计 先想想我们需要文档页通向哪些地方,这里直接给出我的设计: 所属 子标题 跳转路径 文件名(*.vue) 指南 介绍 /do ...

  2. 为什么要用urlencode()函数进行url编码

    URLEncode就是将URL中特殊部分进行编码.URLDecoder就是对特殊部分进行解码. 因为当字符串数据以url的形式传递给web服务器时,字符串中是不允许出现空格和特殊字符的 譬如:你要传的 ...

  3. 任务日历关联(Project)

    <Project2016 企业项目管理实践>张会斌 董方好 编著 有时候吧,一件大事是由N件小事组成的,而这N件小事当中,不是每件事都可以在周末停下来的,当然也不是所有的事都必须在周末完成 ...

  4. 动手做个 AI 机器人,帮我回消息!

    大家好,我是鱼皮,自从做了知识分享,我的微信就没消停过,平均每天会收到几百个消息,大部分都是学编程的朋友向我咨询编程问题. 但毕竟我只有一个人,没法所有消息都一个个回复,所以也是很愧疚和无力吧:另外我 ...

  5. Django中提示消息messages的设置

    1. 引入messages模块 1 from django.contrib import messages 2. 把messages写入view中 1 @csrf_exempt 2 def searc ...

  6. Python3.6+Django2.0以上 xadmin站点的配置和使用

    1. xadmin的介绍 django自带的admin站点虽然功能强大,但是界面不是很好看.而xadmin界面好看,功能更强大,并完全支持Bootstrap主题模板.xadmin内置了丰富的插件功能. ...

  7. java 输入输出IO流 字符流 FileWriter FileReader

    为什么要使用字符流 当使用字节流读取文本文件时,可能会有一个小问题.就是遇到中文字符时,可能不会显示完整的字符,那是因为一个中文字符可能占用多个字节存储.所以Java提供一些字符流类,以字符为单位读写 ...

  8. Sharepoint 列表分页开发

    虽然现在linq技术对列表操作都是对实体操作了,但是linq有一点不好,那就是分页舞从下手,假如查出满足条件的记录有1万条,而在分页的时候我每次只需要显示10条,那么我每次点击下一页的时候都查询的是1 ...

  9. SpringBoot 封装异步执行任务简单demo

    ThreadPoolConfig.java import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.concurrent.B ...

  10. mybatis基于注解的sql中空字符串判断

    @Select("<script>" + "select c.id from dwzsk_content c " + "WHERE c.` ...