使用maven导入kudu

  1. <dependency>
  2. <groupId>org.apache.kudu</groupId>
  3. <artifactId>kudu-client</artifactId>
  4. <version>1.6.</version>
  5. </dependency>

使用java创建Kudu表

  1. public class CreateTable {
  2. private static ColumnSchema newColumn(String name, Type type, boolean iskey) {
  3. ColumnSchema.ColumnSchemaBuilder column = new ColumnSchema.ColumnSchemaBuilder(name, type);
  4. column.key(iskey);
  5. return column.build();
  6. }
  7. public static void main(String[] args) throws KuduException {
  8. // master地址
  9. final String masteraddr = "hadoop01,hadoop02,hadoop03";
  10. // 创建kudu的数据库链接
  11. KuduClient client = new KuduClient.KuduClientBuilder(masteraddr).defaultSocketReadTimeoutMs(6000).build();
  12.  
  13. // 设置表的schema
  14. List<ColumnSchema> columns = new LinkedList<ColumnSchema>();
  15. /**
  16. 与 RDBMS 不同,Kudu 不提供自动递增列功能,因此应用程序必须始终在插入期间提供完整的主键
  17. */
  18. columns.add(newColumn("CompanyId", Type.INT32, true));
  19. columns.add(newColumn("WorkId", Type.INT32, false));
  20. columns.add(newColumn("Name", Type.STRING, false));
  21. columns.add(newColumn("Gender", Type.STRING, false));
  22. columns.add(newColumn("Photo", Type.STRING, false));
  23. Schema schema = new Schema(columns);
  24. //创建表时提供的所有选项
  25. CreateTableOptions options = new CreateTableOptions();
  26. // 设置表的replica备份和分区规则
  27. List<String> parcols = new LinkedList<String>();
  28. parcols.add("CompanyId");
  29.  
  30. //设置表的备份数
  31. options.setNumReplicas(1);
  32. //设置range分区
  33. options.setRangePartitionColumns(parcols);
  34. //设置hash分区和数量
  35. options.addHashPartitions(parcols, 3);
  36. try {
  37. client.createTable("PERSON", schema, options);
  38. } catch (KuduException e) {
  39. e.printStackTrace();
  40. }
  41. client.close();
  42. }
  43. }

使用java删除Kudu表

  1. public class DropTable {
  2. public static void main(String[] args) throws KuduException {
  3. // master地址
  4. final String masteraddr = "hadoop01,hadoop02,hadoop03";
  5. // 创建kudu的数据库链接
  6. KuduClient client = new KuduClient.KuduClientBuilder(masteraddr).defaultSocketReadTimeoutMs(6000).build();
  7. client.deleteTable("PERSON");
  8. client.close();
  9. }
  10. }

使用java插入数据到Kudu

  1. public class InsertRow {
  2. public static void main(String[] args) throws KuduException {
  3. // master地址
  4. final String masteraddr = "hadoop01,hadoop02,hadoop03";
  5. // 创建kudu的数据库链接
  6. KuduClient client = new KuduClient.KuduClientBuilder(masteraddr).build();
  7. // 打开表
  8. KuduTable table = client.openTable("PERSON");
  9. // 创建写session,kudu必须通过session写入
  10. KuduSession session = client.newSession();
  11. // 采取Flush方式 手动刷新
  12. session.setFlushMode(FlushMode.MANUAL_FLUSH);
  13. session.setMutationBufferSpace(3000);
  14. for (int i = 1; i < 10; i++) {
  15. Insert insert = table.newInsert();
  16. // 设置字段内容
  17. insert.getRow().addInt("CompanyId", i);
  18. insert.getRow().addInt("WorkId", i);
  19. insert.getRow().addString("Name", "lisi" + i);
  20. insert.getRow().addString("Gender", "male");
  21. insert.getRow().addString("Photo", "person" + i);
  22. session.flush();
  23. session.apply(insert);
  24. }
  25. session.close();
  26. client.close();
  27. }
  28. }

使用java查询Kudu中的数据

  1. public class FindRow {
  2. public static void main(String[] args) throws KuduException {
  3. //master地址
  4. final String masteraddr = "hadoop01,hadoop02,hadoop03";
  5. //创建kudu的数据库链接
  6. KuduClient client = new KuduClient.KuduClientBuilder(masteraddr).defaultSocketReadTimeoutMs(6000).build();
  7. //打开表
  8. KuduTable table = client.openTable("PERSON");
  9. KuduScannerBuilder builder = client.newScannerBuilder(table);
  10. /**
  11. * 设置搜索的条件
  12. * 如果不设置,则全表扫描
  13. */
  14. KuduPredicate predicate = KuduPredicate.newComparisonPredicate(table.getSchema().getColumn("CompanyId"),
  15. KuduPredicate.ComparisonOp.EQUAL, 1);
  16. builder.addPredicate(predicate);
  17. // 开始扫描
  18. KuduScanner scaner = builder.build();
  19. while (scaner.hasMoreRows()) {
  20. RowResultIterator iterator = scaner.nextRows();
  21. while (iterator.hasNext()) {
  22. RowResult result = iterator.next();
  23. /**
  24. * 输出行
  25. */
  26. System.out.print("CompanyId:" + result.getInt("CompanyId") +" ");
  27. System.out.print("Name:" + result.getString("Name") +" ");
  28. System.out.print("Gender:" + result.getString("Gender")+" ");
  29. System.out.print("WorkId:" + result.getInt("WorkId") +" ");
  30. System.out.println("Photo:" + result.getString("Photo")+" ");
  31. }
  32. }
  33. scaner.close();
  34. client.close();
  35. }
  36. }

使用java更改Kudu表数据

  1. public class UpdateTable {
  2. public static void main(String[] args) {
  3. // master地址
  4. final String masteraddr = "hadoop01,hadoop02,hadoop03";
  5. // 创建kudu的数据库链接
  6. KuduClient client = new KuduClient.KuduClientBuilder(masteraddr).build();
  7. // 打开表
  8. KuduSession session = null;
  9. try {
  10. KuduTable table = client.openTable("PERSON");
  11. session = client.newSession();
  12. session.setFlushMode(SessionConfiguration.FlushMode.AUTO_FLUSH_SYNC);
  13. //更新数据
  14. Update update = table.newUpdate();
  15. PartialRow row1 = update.getRow();
  16. row1.addInt("CompanyId",1);
  17. row1.addString("Name","di");
  18. session.apply(update);
  19. } catch (KuduException e) {
  20. e.printStackTrace();
  21. }finally {
  22. try {
  23. session.close();
  24. } catch (KuduException e) {
  25. e.printStackTrace();
  26. }
  27. }
  28. }
  29. }

使用java删除Kudu中指定行数据

  1. public class DeleteRow {
  2. public static void main(String[] args) throws KuduException {
  3. // master地址
  4. final String masteraddr = "hadoop01,hadoop02,hadoop03";
  5. // 创建kudu的数据库链接
  6. KuduClient client = new KuduClient.KuduClientBuilder(masteraddr).build();
  7. // 打开表
  8. KuduTable table = client.openTable("PERSON");
  9. // 创建写session,kudu必须通过session写入
  10. KuduSession session = client.newSession();
  11. final Delete delete = table.newDelete();
  12. //TODO 注意:行删除和更新操作必须指定要更改的行的完整主键;
  13. delete.getRow().addInt("CompanyId" , 5);
  14. session.flush();
  15. session.apply(delete);
  16. session.close();
  17. client.close();
  18. }
  19. }

使用java操作kudu的更多相关文章

  1. Java实现impala操作kudu

    推荐阅读: 论主数据的重要性(正确理解元数据.数据元) CDC+ETL实现数据集成方案 Java实现impala操作kudu 实战kudu集成impala 对于impala而言,开发人员是可以通过JD ...

  2. Java操作Sqlite数据库-jdbc连接

    Java操作Sqlite数据库步骤: 1. 导入Sqlite jdbc 本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD 2 ...

  3. 【MongoDB for Java】Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...

  4. Java操作Oracle

    public class DBCon { // 数据库驱动对象 public static final String DRIVER = "oracle.jdbc.driver.OracleD ...

  5. JAVA操作ORACLE数据库的存储过程

    一.任务提出 JAVA操作oracle11g存储过程实验需要完成以下几个实例: 1.调用没有返回参数的过程(插入记录.更新记录) 2.有返回参数的过程 3.返回列表的过程 4.返回带分页的列表的过程. ...

  6. JAVA操作MongoDB数据库

    1. 首先,下载MongoDB对Java支持的驱动包 驱动包下载地址:https://github.com/mongodb/mongo-java-driver/downloads 2.Java操作Mo ...

  7. Java操作Session与Cookie

    1,Java操作Session Java操作Session非常简单,步骤如下 1.1,在servlet中通过request获取session HttpSession session = request ...

  8. JAVA操作COOKIE

    JAVA操作COOKIE 1.设置Cookie Cookie cookie = new Cookie("key", "value"); cookie.setMa ...

  9. [转]MongoDB for Java】Java操作MongoDB

    原文地址: MongoDB for Java]Java操作MongoDB 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开 ...

随机推荐

  1. mingw zlib-1.2.11 win32-static.patch

    diff --git a/Makefile.in b/Makefile.in index 1852192..c88f5b5 100644 --- a/Makefile.in +++ b/Makefil ...

  2. Vue 实战项目开发流程

    一 基础配备 ## 一.环境搭建 #### 1.安装node - 去[官网](https://nodejs.org/zh-cn/)下载node安装包 - 傻瓜式安装 - 万一安装后终端没有node环境 ...

  3. ansible笔记(12):handlers的用法

    ansible笔记():handlers的用法 这篇文章会介绍playbook中handlers的用法. 在开始介绍之前,我们先来描述一个工作场景: 当我们修改了某些程序的配置文件以后,有可能需要重启 ...

  4. java乱码问题解决

    1.通过统一的过滤器进行了页面过滤(问题排除) 2.通过debug功能发现页面传到servelet和DAO中文都是OK的,可以说明在web程序端没有问题 问题就可能出现在数据库上面 首先查看数据库编码 ...

  5. interface{} 泛型编程

    转自: 张晓龙 中兴开发者社区 https://mp.weixin.qq.com/s/EEUtTykcrXhcM2hJT01SoQ 序言 众所周知,Golang中不支持类似C++/Java中的标记式泛 ...

  6. 8-Images

    HTML Image Tags Tag Description <img> Defines an image <map> Defines an image-map <ar ...

  7. Node.js的那些坑——如何让异步并发方法同步顺序执行(for循环+异步操作)

    1 前言 nodejs的回调,有时候真的是让人又爱又恨的,当需要用for循环把数据依次存入数据库,但是如果使用正常的for循环,永远都是最后一次值的记录,根本不符合要求. 解决此方案有几种,例如闭包( ...

  8. linux杀死僵尸进程

    用下面的命令找出僵死进程 ps -A -o stat,ppid,pid,cmd | grep -e '^[Zz]' 命令注解: -A 参数列出所有进程 -o 自定义输出字段 我们设定显示字段为 sta ...

  9. xampp 搭建好本地服务器以后手机无法访问

    转载地址:https://blog.csdn.net/weixin_35773751/article/details/80076492 解决办法: 1.将网络连接修改为工作网络,然后关闭工作局域网的防 ...

  10. Confluence 6 使用页面请求属性来对慢性能进行问题解决

    这个页面告诉你如何启用页面请求属性.当这个属性启用以后,你可以查看在 Confluence 任何页面完成的一个记录消耗的时间(毫秒).如果 Confluence 反应缓慢的话,一个关于慢页面请求的内部 ...