Java实现impala操作kudu
推荐阅读:
对于impala而言,开发人员是可以通过JDBC连接impala的,有了JDBC,开发人员可以通过impala来间接操作 kudu;
引入maven相关依赖
<!--impala的jdbc操作-->
<dependency>
<groupId>com.cloudera</groupId>
<artifactId>ImpalaJDBC41</artifactId>
<version>2.5.</version>
</dependency>
通过JDBC连接impala操作kudu
使用JDBC连接impala操作kudu,与JDBC连接mysql做更重增删改查基本一样,创建实体类代码如下:
package cn.itcast.impala.impala;
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 void setCompanyId(int companyId) {
this.companyId = companyId;
}
public int getWorkId() {
return workId;
}
public void setWorkId(int workId) {
this.workId = workId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public String getPhoto() {
return photo;
}
public void setPhoto(String photo) {
this.photo = photo;
}
}
JDBC连接impala对kudu进行增删改查
package cn.itcast.impala.impala;
import java.sql.*;
public class Contants {
private static String JDBC_DRIVER="com.cloudera.impala.jdbc41.Driver";
private static String CONNECTION_URL="jdbc:impala://node1:21050/default;auth=noSasl";
//定义数据库连接
static Connection conn=null;
//定义PreparedStatement对象
static PreparedStatement ps=null;
//定义查询的结果集
static ResultSet rs= null;
//数据库连接
public static Connection getConn(){
try {
Class.forName(JDBC_DRIVER);
conn=DriverManager.getConnection(CONNECTION_URL);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
//创建一个表
public static void createTable(){
conn=getConn();
String sql="CREATE TABLE impala_kudu_test" +
"(" +
"companyId BIGINT," +
"workId BIGINT," +
"name STRING," +
"gender STRING," +
"photo STRING," +
"PRIMARY KEY(companyId)" +
")" +
"PARTITION BY HASH PARTITIONS 16 " +
"STORED AS KUDU " +
"TBLPROPERTIES (" +
"'kudu.master_addresses' = 'node1:7051,node2:7051,node3:7051'," +
"'kudu.table_name' = 'impala_kudu_test'" +
");";
try {
ps = conn.prepareStatement(sql);
ps.execute();
} catch (SQLException e) {
e.printStackTrace();
}
}
//查询数据
public static ResultSet queryRows(){
try {
//定义执行的sql语句
String sql="select * from impala_kudu_test";
ps = getConn().prepareStatement(sql);
rs= ps.executeQuery();
} catch (SQLException e) {
e.printStackTrace();
}
return rs;
}
//打印结果
public static void printRows(ResultSet rs){
/**
private int companyId;
private int workId;
private String name;
private String gender;
private String photo;
*/
try {
while (rs.next()){
//获取表的每一行字段信息
int companyId = rs.getInt("companyId");
int workId = rs.getInt("workId");
String name = rs.getString("name");
String gender = rs.getString("gender");
String photo = rs.getString("photo");
System.out.print("companyId:"+companyId+" ");
System.out.print("workId:"+workId+" ");
System.out.print("name:"+name+" ");
System.out.print("gender:"+gender+" ");
System.out.println("photo:"+photo);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
if(ps!=null){
try {
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn !=null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
//插入数据
public static void insertRows(Person person){
conn=getConn();
String sql="insert into table impala_kudu_test(companyId,workId,name,gender,photo) values(?,?,?,?,?)";
try {
ps=conn.prepareStatement(sql);
//给占位符?赋值
ps.setInt(1,person.getCompanyId());
ps.setInt(2,person.getWorkId());
ps.setString(3,person.getName());
ps.setString(4,person.getGender());
ps.setString(5,person.getPhoto());
ps.execute();
} catch (SQLException e) {
e.printStackTrace();
}finally {
if(ps !=null){
try {
//关闭
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn !=null){
try {
//关闭
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
//更新数据
public static void updateRows(Person person){
//定义执行的sql语句
String sql="update impala_kudu_test set workId="+person.getWorkId()+
",name='"+person.getName()+"' ,"+"gender='"+person.getGender()+"' ,"+
"photo='"+person.getPhoto()+"' where companyId="+person.getCompanyId();
try {
ps= getConn().prepareStatement(sql);
ps.execute();
} catch (SQLException e) {
e.printStackTrace();
}finally {
if(ps !=null){
try {
//关闭
ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn !=null){
try {
//关闭
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
//删除数据
public static void deleteRows(int companyId){
//定义sql语句
String sql="delete from impala_kudu_test where companyId="+companyId;
try {
ps =getConn().prepareStatement(sql);
ps.execute();
} catch (SQLException e) {
e.printStackTrace();
}
}
//删除表
public static void dropTable() {
String sql="drop table if exists impala_kudu_test";
try {
ps =getConn().prepareStatement(sql);
ps.execute();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
代码测试运行
package cn.itcast.impala.impala;
import java.sql.Connection;
public class ImpalaJdbcClient {
public static void main(String[] args) {
Connection conn = Contants.getConn();
//创建一个表
Contants.createTable();
//插入数据
Contants.insertRows(new Person(1,100,"lisi","male","lisi-photo"));
//查询表的数据
ResultSet rs = Contants.queryRows();
Contants.printRows(rs);
//更新数据
Contants.updateRows(new Person(1,200,"zhangsan","male","zhangsan-photo"));
//删除数据
Contants.deleteRows(1);
//删除表
Contants.dropTable();
}
}
Java实现impala操作kudu的更多相关文章
- 使用impala操作kudu之创建kudu表(内部表和外部表)
依次启动HDFS.mysql.hive.kudu.impala 登录impala的shell控制端: Impala-shell 1:使用该impala-shell命令启动Impala Shell .默 ...
- 通过java代码进行impala和kudu的对接
对于impala而言,开发人员是可以通过JDBC连接impala的,有了JDBC,开发人员可以通过impala来间接操作kudu: maven导包: <!-- https://mvnreposi ...
- 使用impala对kudu进行DML操作
将数据插入 Kudu 表 impala 允许使用标准 SQL 语句将数据插入 Kudu 插入单个值 创建表: CREATE TABLE my_first_table ( id BIGINT, name ...
- 使用java操作kudu
使用maven导入kudu <dependency> <groupId>org.apache.kudu</groupId> <artifactId>ku ...
- Java Spring mvc 操作 Redis 及 Redis 集群
本文原创,转载请注明:http://www.cnblogs.com/fengzheng/p/5941953.html 关于 Redis 集群搭建可以参考我的另一篇文章 Redis集群搭建与简单使用 R ...
- Java的JDBC操作
Java的JDBC操作 [TOC] 1.JDBC入门 1.1.什么是JDBC JDBC从物理结构上来说就是java语言访问数据库的一套接口集合,本质上是java语言根数据库之间的协议.JDBC提供一组 ...
- Java读写文本文件操作
package com.test; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File; ...
- 第26章 java进制操作
java进制操作 1.二进制 二进制只有0和1,逢二进一 二进制多用在计算机中,来自计算机硬件的开关闭合 2.位运算 分别讲解: 2.1.按位与 & 两位全为1,结果才为1 0&0=0 ...
- Java生成和操作Excel文件(转载)
Java生成和操作Excel文件 JAVA EXCEL API:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容.创建新的Excel文件.更新已经存在的Excel文件.使用该A ...
随机推荐
- Hyper-V虚拟机Redhat添加网卡找不到网卡配置文件解决方法
环境:Hyper-V虚拟机上面安安装Redhat6.7 问题:系统安装时,只有一块网卡,现根据需要,增加一块网卡,DHCP获取IP地址,在Hyper-V设置中增加网卡后,存在连个问题:1./etc/s ...
- Python学习,第八课 - 函数
本次讲解函数,由于内容比较多,小编列了个大纲,主要有一下内容: 1. 函数基本语法及特性 2. 函数参数 3.局部变量 4. 返回值 5.嵌套函数 6.递归 7.匿名函数 8.高阶函数 9.内置函数 ...
- Oracle批量创建同义词
一.介绍 Oracle的同义词(synonyms)从字面上理解就是别名的意思,和视图的功能类似,就是一种映射关系.它可以节省大量的数据库空间,对不同用户的操作同一张表没有多少差别;它扩展了数据库的使用 ...
- Nutz框架-- Cnd条件使用原生sql
案例 今天接到一个临时的业务需求,做一个简单的过滤作为临时业务需要使用一两天,于是想到在原有的Cnd条件上加上一个Not like 进行过滤,但是发现现有Cnd条件查询好像满足不了 解决方案 使用Nu ...
- 【动手学pytorch】线性回归
代码及解释 错题整理
- Codeforces_821
A.直接判断每一个数. #include<bits/stdc++.h> using namespace std; ][]; int main() { ios::sync_with_stdi ...
- asp.net EF core 系列 作者:懒懒的程序员一枚
asp.net core 系列 19 EFCore介绍写作逻辑一 .概述1.1 比较EF Core 和EF61.2 EF Core数据库提供程序 1.3 引用程序添加数据库提供程序1.4 获取Enti ...
- 轻松搞懂Python递归函数的原理与应用
递归: 在函数的定义中,函数内部的语句调用函数本身. 1.递归的原理 学习任何计算机语言过程中,“递归”一直是所有人心中的疼.不知你是否听过这个冷笑话:“一个面包,走着走着饿了,于是就把自己吃了”. ...
- 创建一个JavaWeb工程
1.用到的工具:eclipse编译器+Tomcat9,在自己电脑上已配置好jdk和tomcat的环境变量 2.新建一个project 2.选择web文件中的Dynamic Web project,进入 ...
- 【大白话系统】MySQL 学习总结 之 缓冲池(Buffer Pool) 如何支撑高并发和动态调整
如果大家对我的 [大白话系列]MySQL 学习总结系列 感兴趣的话,可以点击关注一波. 一.上节回顾 在上节< 缓冲池(Buffer Pool) 的设计原理和管理机制>中,介绍了缓冲池整体 ...