通过java代码进行impala和kudu的对接
对于impala而言,开发人员是可以通过JDBC连接impala的,有了JDBC,开发人员可以通过impala来间接操作kudu;

maven导包:
<!-- https://mvnrepository.com/artifact/com.cloudera/ImpalaJDBC41 -->
<dependency>
<groupId>com.cloudera</groupId>
<artifactId>ImpalaJDBC41</artifactId>
<version>2.5.41</version>
</dependency>
通过JDBC连接impala操作kudu
使用JDBC连接impala操作kudu,与JDBC连接mysql做更重增删改查基本一样
创建实体类
package com.impala; /**
* Created by angel;
*/
public class Person { private int companyId;
private int workId ;
private String name;
private String gender;
private String photo;
public Person(int companyId , int workId , String name , String gender , String photo){
this.companyId = companyId ;
this.workId = workId ;
this.name = name ;
this.gender = gender ;
this.photo = photo ;
}
public int getCompanyId() {
return companyId;
} public int getWorkId() {
return workId;
} public String getGender() {
return gender;
} public String getName() {
return name;
} public String getPhoto() {
return photo;
} public void setCompanyId(int companyId) {
this.companyId = companyId;
} public void setGender(String gender) {
this.gender = gender;
} public void setName(String name) {
this.name = name;
} public void setPhoto(String photo) {
this.photo = photo;
} public void setWorkId(int workId) {
this.workId = workId;
} @Override
public String toString() {
return super.toString();
}
}
JDBC连接impala对kudu进行增删改查
package com.impala; import java.sql.*; /**
* Created by angel;
*/
public class Contants {
private static String JDBC_DRIVER = "com.cloudera.impala.jdbc41.Driver";
private static String CONNECTION_URL = "jdbc:impala://hadoop01:21050/default;auth=noSasl";
static Connection con = null;
static ResultSet rs = null;
static PreparedStatement ps = null;
//连接
public static Connection getConn() { try {
Class.forName(JDBC_DRIVER);
con = DriverManager.getConnection(CONNECTION_URL);
}catch (Exception e){
e.printStackTrace();
}
return con;
}
//查询
public static ResultSet QueryRows(String sql){
try {
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
//打印
public static void printRows(ResultSet rs){
try{ while (rs.next()) {
final int companyId = rs.getInt("companyid");
final int workId = rs.getInt("workid");
final String name = rs.getString("Name");
final String gender = rs.getString("gender");
final String photo = rs.getString("photo");
System.out.println(companyId + "----" + workId + "----" + name+ "----" +gender+ "----" + photo);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭rs、ps和con
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(ps != null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(con != null){
try {
con.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
//插入
public static void insertRows(Person person){
con = getConn();
String sql = "insert into external_table2 (companyid,workid,name,gender,photo) values(?,?,?,?,?)";
PreparedStatement pstmt;
try { pstmt = (PreparedStatement) con.prepareStatement(sql);
pstmt.setInt(1 , person.getCompanyId());
pstmt.setInt(2, person.getWorkId());
pstmt.setString(3, person.getName());
pstmt.setString(4, person.getGender());
pstmt.setString(5, person.getPhoto());
pstmt.executeUpdate(); } catch (SQLException e) {
e.printStackTrace();
}
} //更新
public static void updateRows(Person person){
Connection conn = getConn();
String sql = "update external_table2 set photo='" + person.getPhoto() + "' , name='"+person.getName()+"' where workid=" + person.getWorkId(); PreparedStatement pstmt;
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql);
pstmt.executeUpdate(); } catch (SQLException e) {
e.printStackTrace();
}
} //删除
public static void deleteRows(int workID){
Connection conn = getConn();
String sql = "delete from external_table2 where workid="+workID;
PreparedStatement pstmt;
try {
pstmt = (PreparedStatement) conn.prepareStatement(sql);
pstmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
} }
测试
package com.impala; import org.apache.log4j.Logger;
import java.sql.*; public class ImpalaJdbcClient {
private static String JDBC_DRIVER = "com.cloudera.impala.jdbc41.Driver";
//默认数据库default,默认用户名就是登录账号 密码 为空
private static String CONNECTION_URL = "jdbc:impala://hadoop01:21050/default;auth=noSasl";
private static final Logger log = Logger.getLogger(ImpalaJdbcClient.class);
public static void main(String[] args) throws Exception {
final Connection con = Contants.getConn();
//查询
// String sql = "select * from external_table2;";
// final ResultSet rs = Contants.QueryRows(sql);
// Contants.printRows(rs);
//插入
// Contants.insertRows(new Person(11 , 11 , "zhansan" , "female" , "photo10"));
// String sql = "select * from external_table2;";
// final ResultSet rs = Contants.QueryRows(sql);
// Contants.printRows(rs);
//删除
// Contants.deleteRows(10);
// String sql = "select * from external_table2;";
// final ResultSet rs = Contants.QueryRows(sql);
// Contants.printRows(rs);
//更新
// Contants.updateRows(new Person(1,1,"aaaa" , "male" , "pppppp"));
// String sql = "select * from external_table2;";
// final ResultSet rs = Contants.QueryRows(sql);
// Contants.printRows(rs);
}
}
通过java代码进行impala和kudu的对接的更多相关文章
- Java实现impala操作kudu
推荐阅读: 论主数据的重要性(正确理解元数据.数据元) CDC+ETL实现数据集成方案 Java实现impala操作kudu 实战kudu集成impala 对于impala而言,开发人员是可以通过JD ...
- 使用impala操作kudu之创建kudu表(内部表和外部表)
依次启动HDFS.mysql.hive.kudu.impala 登录impala的shell控制端: Impala-shell 1:使用该impala-shell命令启动Impala Shell .默 ...
- 对一致性Hash算法,Java代码实现的深入研究
一致性Hash算法 关于一致性Hash算法,在我之前的博文中已经有多次提到了,MemCache超详细解读一文中"一致性Hash算法"部分,对于为什么要使用一致性Hash算法.一致性 ...
- 怎样编写高质量的java代码
代码质量概述 怎样辨别一个项目代码写得好还是坏?优秀的代码和腐化的代码区别在哪里?怎么让自己写的代码既漂亮又有生命力?接下来将对代码质量的问题进行一些粗略的介绍.也请有过代码质量相关经验的朋友 ...
- 数据结构笔记--二叉查找树概述以及java代码实现
一些概念: 二叉查找树的重要性质:对于树中的每一个节点X,它的左子树任一节点的值均小于X,右子树上任意节点的值均大于X. 二叉查找树是java的TreeSet和TreeMap类实现的基础. 由于树的递 ...
- java代码的初始化过程研究
刚刚在ITeye上看到一篇关于java代码初始化的文章,看到代码我试着推理了下结果,虽然是大学时代学的知识了,没想到还能做对.(看来自己大学时掌握的基础还算不错,(*^__^*) 嘻嘻……)但 ...
- JDBC——Java代码与数据库链接的桥梁
常用数据库的驱动程序及JDBC URL: Oracle数据库: 驱动程序包名:ojdbc14.jar 驱动类的名字:oracle.jdbc.driver.OracleDriver JDBC URL:j ...
- 利用Java代码在某些时刻创建Spring上下文
上一篇中,描述了如何使用Spring隐式的创建bean,但当我们需要引进第三方类库添加到我们的逻辑上时,@Conponent与@Autowired是无法添加到类上的,这时,自动装配便不适用了,我们需要 ...
- lombok 简化java代码注解
lombok 简化java代码注解 安装lombok插件 以intellij ide为例 File-->Setting-->Plugins-->搜索"lombok plug ...
随机推荐
- ES--03
第二十一讲! 1.上机动手实战演练基于_version进行乐观锁并发控制 (1)先构造一条数据出来 PUT /test_index/test_type/7{ "test_field" ...
- windows下安装Rabbitmq详解
RabbitMQ是建立在强大的Erlang OTP平台上,因此安装Rabbit MQ的前提是安装Erlang. 1.什么是Erlang? Erlang(['ə:læŋ])是一种通用的面向并发的编程语言 ...
- 一篇文章让你了解Android各个版本的历程
2008年--至今 Android 1.5(Cupcake纸杯蛋糕): 智能虚拟键盘:使用widgets实现桌面个性化:在线文件夹(Live Folder)快速浏览在线数据:视频录制和分享:图片上传: ...
- 【MySql】join操作
飞机票 飞机票 加油 INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录. LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录. RIGHT JOIN( ...
- python垃圾回收机制:引用计数 VS js垃圾回收机制:标记清除
js垃圾回收机制:标记清除 Js具有自动垃圾回收机制.垃圾收集器会按照固定的时间间隔周期性的执行. JS中最常见的垃圾回收方式是标记清除. 工作原理 当变量进入环境时,将这个变量标记为"进入 ...
- Linux 用户(user)和用户组(group)管理概述
一.理解Linux的单用户多任务,多用户多任务概念: Linux 是一个多用户.多任务的操作系统:我们应该了解单用户多任务和多用户多任务的概念: 1.Linux 的单用户多任务:单用户多任务:比如我们 ...
- Linux 系统根目录下各个文件夹的作用
原文: https://blog.csdn.net/qq_26941173/article/details/78376760 /bin 系统由很多放置可执行文件的目录,但是bin目录比较特殊.因为bi ...
- laravel 获取当前月,当前星期,当天起始时间方法
获取当前月起始时间: 1. $time=time(); $start=date('Y-m-01',$time);//获取指定月份的第一天 $end=date('Y-m-t',$time); //获取指 ...
- Pychram 在model中修改class属性值后更新到Navicat Premium中
一.pycharm数据更新的问题bug问题 1.在更改user_email字端属性后出现数据库信息无法更新到数据库,出现的bug原因是数据库修改了属性之后没有做migrate 和 makemigrat ...
- 使用git克隆项目、从dev分支上更新代码以及将代码提交到Coding(或GitHub)上面
本教程的目的: 这是个crm项目中,有两个分支一个是master 和 dev ,master主分支,不允许提交代码,我要拉去dev分支上最新的代码,并将修改后的项目,在推送到dev分支上. 一. 1. ...