新建maven文件,pom中添加依赖
-
<!-- https://mvnrepository.com/artifact/org.apache.kudu/kudu-client --> <dependency> <groupId>org.apache.kudu</groupId> <artifactId>kudu-client</artifactId> <version>1.7.1</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.kudu/kudu-client-tools --> <dependency> <groupId>org.apache.kudu</groupId> <artifactId>kudu-client-tools</artifactId> <version>1.7.1</version> </dependency>
主类:
-
public class JavaTestKudu { //创建KuduClient客户端对象 private static KuduClient kuduClient; //定义表名 private static String tableName = "表名"; //初始化方法 @Before public void init() { //指定master主机地址 String masterAddress = "node1,node2,node3"; //建立kudu数据库连接 kuduClient = new KuduClient.KuduClientBuilder(masterAddress).defaultSocketReadTimeoutMs(6000).build(); } //构建表schema的字段信息 字段名称 数据类型 是否为主键 public ColumnSchema newColumn(String name, Type type, boolean isKey) { //字段构建对象 ColumnSchema.ColumnSchemaBuilder column = new ColumnSchema.ColumnSchemaBuilder(name, type); //设置主键字段 column.key(isKey); return column.build(); } }
测试方法:建表
-
@Test public void createTable() throws KuduException { //设置表的schema List<ColumnSchema> columns = new LinkedList<ColumnSchema>(); //新建并添加新的字段(字段名,类型,是否主键) columns.add(newColumn("Id", Type.INT32, true)); columns.add(newColumn("Name", Type.STRING, false)); columns.add(newColumn("Gender", Type.STRING, false)); columns.add(newColumn("Tel", Type.STRING, false)); Schema schema = new Schema(columns); //创建表选项:副本 + 分区(hash,range,...) CreateTableOptions tableOptions = new CreateTableOptions(); //设置表副本个数 tableOptions.setNumReplicas(1); //分区设置 LinkedList<String> list = new LinkedList<String>(); list.add("Id"); //类型1:设置range分区 //tableOptions.setRangePartitionColumns(list); //类型2:设置hash分区和分区的数量 tableOptions.addHashPartitions(list, 3); try { kuduClient.createTable("表名", schema, tableOptions); } catch (Exception e) { e.printStackTrace(); } kuduClient.close(); }
测试方法:插入操作
-
//插入数据insert @Test public void loadData() throws KuduException { //打开表 KuduTable kuduTable = kuduClient.openTable(tableName); //创建KuduSession对象 kudu必须通过KuduSession写入数据 KuduSession kuduSession = kuduClient.newSession(); //采用flush方式 手动刷新 kuduSession.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH); kuduSession.setMutationBufferSpace(3000); //准备数据 for (int i = 1; i <= 10; i++) { Insert insert = kuduTable.newInsert(); //设置字段的内容 insert.getRow().addInt(":Id", i); insert.getRow().addString("Name", "名字" + i); insert.getRow().addString("Gender", "male"); insert.getRow().addString("Tel", "123" + i); kuduSession.flush(); kuduSession.apply(insert); } kuduSession.close(); kuduClient.close(); }
测试方法:查询数据(全部)
-
//查询数据 @Test public void queryData() throws KuduException { //打开表 KuduTable kuduTable = kuduClient.openTable(tableName); //获取scanner扫描器 KuduScanner.KuduScannerBuilder scannerBuilder = kuduClient.newScannerBuilder(kuduTable); KuduScanner scanner = scannerBuilder.build(); //遍历 while (scanner.hasMoreRows()) { RowResultIterator rowResults = scanner.nextRows(); while (rowResults.hasNext()) { RowResult result = rowResults.next(); int Id = result.getInt("Id"); String name = result.getString("Name"); String gender = result.getString("Gender"); String Tel = result.getString("Tel"); System.out.print("Id:" + Id + " "); System.out.print("name:" + name + " "); System.out.print("gender:" + gender + " "); System.out.println("Tel:" + Tel); } } //关闭 scanner.close(); kuduClient.close(); }
测试方法:修改数据
-
//修改数据 @Test public void updateData() throws KuduException { //打开表 KuduTable kuduTable = kuduClient.openTable(tableName); //构建kuduSession对象 KuduSession kuduSession = kuduClient.newSession(); //设置刷新数据模式,自动提交 kuduSession.setFlushMode(SessionConfiguration.FlushMode.AUTO_FLUSH_BACKGROUND); //更新数据需要获取Update对象 Update update = kuduTable.newUpdate(); //获取row对象 PartialRow row = update.getRow(); //设置要更新的数据信息 row.addInt("Id", 1); row.addString("Name", "kobe"); //操作这个update对象 kuduSession.apply(update); kuduSession.close(); }
测试方法:删除数据
-
//删除数据 @Test public void deleteData() throws KuduException { //打开表 KuduTable kuduTable = kuduClient.openTable(tableName); KuduSession kuduSession = kuduClient.newSession(); //获取Delete对象 Delete delete = kuduTable.newDelete(); //构建要删除的行对象 PartialRow row = delete.getRow(); //设置删除数据的条件 删除id=2这行 row.addInt("Id", 2); kuduSession.flush(); kuduSession.apply(delete); kuduSession.close(); kuduClient.close(); }
测试方法:删除表
-
//删除表 @Test public void dropTable() throws KuduException { //删除表 DeleteTableResponse response = kuduClient.deleteTable(tableName); //关闭客户端连接 kuduClient.close(); }