首页 > 编程语言 >java操作kudu 增删改查

java操作kudu 增删改查

时间:2023-01-13 22:34:40浏览次数:49  
标签:java name tableName 改查 kuduClient kudu new id row


1. maven导入依赖

<dependency>
<groupId>org.apache.kudu</groupId>
<artifactId>kudu-client</artifactId>
<version>1.6.0</version>
</dependency>

2.增删改查

/**
* @description kudu测试demo
* @author IT云清
*/
@SpringBootTest
@RunWith(SpringRunner.class)
public class KuduTest {
private static Logger logger = LoggerFactory.getLogger(KuduTest.class);

private KuduClient kuduClient;
private String kuduMaster;
private String tableName;

@Before
public void init(){
kuduMaster = "";
tableName = "user";
KuduClientBuilder kuduClientBuilder = new KuduClientBuilder(kuduMaster);
kuduClientBuilder.defaultSocketReadTimeoutMs(10000);
kuduClient = kuduClientBuilder.build();
}

@Test
public void testCreateTable() throws KuduException {
if(!kuduClient.tableExists(tableName)){
ArrayList<ColumnSchema> columnSchemas = new ArrayList<>();
columnSchemas.add(new ColumnSchema.ColumnSchemaBuilder("id", Type.INT32).key(true).build());
columnSchemas.add(new ColumnSchema.ColumnSchemaBuilder("name",Type.STRING).build());
columnSchemas.add(new ColumnSchema.ColumnSchemaBuilder("date",Type.UNIXTIME_MICROS).build());//日期待定
columnSchemas.add(new ColumnSchema.ColumnSchemaBuilder("money",Type.DOUBLE).build());//小数待定
Schema schema = new Schema(columnSchemas);

CreateTableOptions options = new CreateTableOptions();
List<String> partitionList = new ArrayList<>();
//kudu表的分区字段是什么 TODO
partitionList.add("id");
//按照id.hashcode % 分区数 = 分区号
options.addHashPartitions(partitionList,6);

kuduClient.createTable(tableName,schema,options);
}
}


@Test
public void insert() throws KuduException {
KuduSession kuduSession = kuduClient.newSession();
kuduSession.setFlushMode(FlushMode.AUTO_FLUSH_SYNC);

for(int i = 0; i <= 100;i ++){
KuduTable userTable = kuduClient.openTable(tableName);
Insert insert = userTable.newInsert();
PartialRow row = insert.getRow();
row.addInt("id",i);
row.addString("name","wang"+i);
row.addDouble("money",100.342+i);

kuduSession.apply(insert);
}
}

@Test
public void query() throws KuduException {
KuduScannerBuilder kuduScannerBuilder = kuduClient
.newScannerBuilder(kuduClient.openTable(tableName));
List<String> columns = Arrays.asList("id","name","moeny");
kuduScannerBuilder.setProjectedColumnNames(columns);
KuduScanner kuduScanner = kuduScannerBuilder.build();
while (kuduScanner.hasMoreRows()){
RowResultIterator rowResults = kuduScanner.nextRows();
while(rowResults.hasNext()){
RowResult row = rowResults.next();
logger.info("id={},name={},money={}",
row.getInt("id"),
row.getString("name"),
row.getDouble("money"));
}
}
}

@Test
public void update() throws KuduException {
KuduSession kuduSession = kuduClient.newSession();
kuduSession.setFlushMode(FlushMode.AUTO_FLUSH_SYNC);
KuduTable kuduTable = kuduClient.openTable(tableName);

// Update update = kuduTable.newUpdate();
//id存在就修改,不存在就新增
Upsert upsert = kuduTable.newUpsert();
PartialRow row = upsert.getRow();
row.addInt("id",100000);
row.addString("name","yangege");
row.addDouble("money",100.222);
kuduSession.apply(upsert);
}
}


标签:java,name,tableName,改查,kuduClient,kudu,new,id,row
From: https://blog.51cto.com/u_15936016/6006756

相关文章

  • javase知识点总结:三种程序逻辑结构,输入输出
    顺序结构顺序结构程序就是按语句出现的先后顺序执行的程序结构。计算机按顺序逐条执行语句,当一条语句执行完毕,自动转到下一条语句。分支结构if语句1.语法格式1if(......
  • JavaScript快速入门
    语句只需简单地把各条语句放在不同的行上就可以分隔它们vara=1varb=2如果想把多条语句放在同一行上,就需要用分号隔开vara=1;varb=2注释用两个斜线......
  • 用Java写一个分布式缓存——缓存淘汰算法
    前言之前也用过一些缓存中间件,框架,也想着自己是不是也能用Java写一个出来,于是就有了这个想法,打算在写的过程中同步进行总结。源码:weloe/Java-Distributed-Cache(github.......
  • Java 正则表达式详解_正则表达式
    Java正则表达式详解_正则表达式如果你不熟悉这个术语,那么“正则表达式”(RegularExpression)就是一个字符构成的串,它定义了一个用来搜索匹配字符串的模式。​​正则表达式3......
  • Java生成和操作Excel文件 - 残星
    JAVAEXCELAPI:是一开放源码项目,通过它Java开发人员可以读取Excel文件的内容、创建新的Excel文件、更新已经存在的Excel文件。使用该API非Windows操作系统也可以通过纯......
  • 顺着这份Java面试地图,国内一二线互联网公司随便进...
    原创:陶朱公Boy(微信公众号ID:taozhugongboy),欢迎分享,转载请保留出处。前言临近春节,这几天手头没什么事情,花了点时间,将自己近两年收集的面试真题,进行了一番深度归纳总结,......
  • Java 以上超大文件上传和断点续传服务器的实现
    ​ 第一点:Java代码实现文件上传FormFilefile=manform.getFile();StringnewfileName= null;Stringnewpathname= null;StringfileAddre= "/numUp";try{......
  • JavaScript学习笔记—循环
    JS三种循环语句while语句do-while语句for语句通常编写一个循环,需要有三个条件:(1)初始化表达式(2)条件表达式(3)更新表达式1.while循环语法while(condition){......
  • java中关于继承,多态及方法调用的底层细节
    java中关于继承,多态及方法调用的底层细节一、继承继承已存在的类就是复用(继承)这些类的方法和域。在此基础上,还可以添加一些新的方法和域,以满足新的需求。子类会拥有......
  • java数据类型
    Java语言支持的数据类型分为两种:基本数据类型(PrimitiveType)和引用数据类型(ReferenceType)Java基本数据类型基本数据类型包括Boolean(布尔值)、flot(单精度浮点型)、char(字......