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 ...
随机推荐
- 关于基本布局之——Grid布局
Gird布局 一.关于概念 网格布局(Grid)是一个很强大的 CSS 布局方案.它可以将网页划分为多个网格任意拼接的布局,可以灵活的运用并实现出多种布局形式. (grid和inline-grid区别 ...
- ajax 后台java代码执行完毕 前端报404错误
一个ajax请求,到java后台代码,后台成功接受并执行相应处理,但是返回的时候,success却没进去,前端报404错误. 因为是由于Controller忘记写spring的@Responsebod ...
- requestAnimationFrame 与 seeTimeout 的区别
requestAnimationFrame 随着浏览器的刷新而执行. let a = () =>{ doSomething() ; window.reques ...
- CentOS 7 上CNVnator安装
1.到github上下载最新版本 https://github.com/abyzovlab/CNVnator/releases 2.先看INSTALL文件,要求以下依赖,我的机器上已经安装了前两个,所 ...
- 应用层vc实现三种文件监视方法
http://hi.baidu.com/sadusaga/item/daa0d4b764c6dd76254b09cc http://bbs.csdn.net/topics/280032788 http ...
- centos 配置自动启动(nginx为例)
[Unit] Description=nginx After=network.target [Service] Type=forking ExecStart=/usr/local/nginx/sbin ...
- FPGA基础知识关键点摘要
FPGA基础知识关键点摘要 一.组合逻辑和时序逻辑的区别:组合逻辑与输入直接实时相关,时序逻辑还必须在时钟上升沿出发后输出新值,有没有时钟输入是他们最大的区别!组合时序容易出现竞争冒险现象出现亚稳态, ...
- ps-如何移动照片里的内容
1.我们用内容感知移动工具把所要移动的区域大致勾选出来. 2.然后我们将所选区域拖动(点击鼠标左键不放拖动). 3.松开鼠标 4.仿制图章工具,alt 键取样,涂抹
- Codeforces_816
A.不断增加时间,直到符合要求. #include<bits/stdc++.h> using namespace std; int a,b; char c; int f(int x) { ...
- BZOJ 1614 [Usaco2007 Jan]Telephone Lines架设电话线 (二分+最短路)
题意: 给一个2e4带正边权的图,可以免费k个边,一条路径的花费为路径上边权最大值,问你1到n的最小花费 思路: 对于一个x,我们如果将大于等于x的边权全部免费,那么至少需要免费的边的数量就是 “设大 ...