|NO.Z.00005|——————————|BigDataEnd|——|Hadoop&OLAP_Kudu.V05|——|kudu.v05|常用API|插入查询数据|
一、KuDuApi常用操作:插入数据
### --- 插入数据
~~~ # 思路:
~~~ 获取客户端
~~~ 打开一张表
~~~ 创建会话
~~~ 设置刷新模式
~~~ 获取插入实例
~~~ 声明带插入数据
~~~ 刷入数据
~~~ 应用插入实例
~~~ 关闭会话
~~~ # AUTO_FLUSH_SYNC(默认)
~~~ 意思是调用 KuduSession.apply() 方法后,
~~~ 客户端会在当数据刷新到服务器后再返回,这种情况就不能批量插入数据,
~~~ 调用 KuduSession.flush() 方法不会起任何作用,应为此时缓冲区数据已经被刷新到了服务器。
~~~ # AUTO_FLUSH_BACKGROUND
~~~ 意思是调用 KuduSession.apply() 方法后,
~~~ 客户端会立即返回,但是写入将在后台发送,可能与来自同一会话的其他写入一起进行批处理。
~~~ 如果没有足够的缓冲空间,KuduSession.apply()会阻塞,缓冲空间不可用。
~~~ 因为写入操作是在后台应用进行的的,因此任何错误都将存储在一个会话本地缓冲区中。
~~~ 注意:这个模式可能会导致数据插入是乱序的,这是因为在这种模式下,
~~~ 多个写操作可以并发地发送到服务器。即此处为 kudu 自身的一个 bug,KUDU-1767 已经说明。
~~~ # MANUAL_FLUSH
~~~ 意思是调用 KuduSession.apply() 方法后,会返回的非常快,但是写操作不会发送,
~~~ 直到用户使用flush()函数,如果缓冲区超过了配置的空间限制,
~~~ KuduSession.apply()函数会返回一个错误。
### --- 编程代码实现
### --- 编译打印
package com.yanqi.kudu.api;
import org.apache.kudu.client.*;
public class insertDemo {
public static void main(String[] args) {
//1、获取客户端
KuduClient.KuduClientBuilder builder = new KuduClient.KuduClientBuilder("hadoop01");
builder.defaultSocketReadTimeoutMs(5000);
KuduClient client = builder.build();
try {
//2、打开一张表
KuduTable stuTable = client.openTable("student");
//3、创建会话
KuduSession kuduSession = client.newSession();
//4、设置刷数据模式
kuduSession.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH);
//5、获取插入实例
Insert insert = stuTable.newInsert();
//6、声明待插入数据
insert.getRow().addInt("id",2);
insert.getRow().addString("name","yanqi");
//7、刷入数据
kuduSession.flush();
//8、应用插入实例
kuduSession.apply(insert);
//9、关闭会话
kuduSession.close();
} catch (KuduException e) {
e.printStackTrace();
} finally {
try {
client.close();
} catch (KuduException e) {
e.printStackTrace();
}
}
}
}

二、KuDuApi常用操作:查询数据
### --- 查询数据:kudu查询数据用scanner
~~~ # 思路:
~~~ 获取client
~~~ 获取Scanner
~~~ 从Scanner中循环遍历数据
### --- 编程代码实现
package com.yanqi.kudu.api;
import org.apache.kudu.client.*;
public class selectDemo {
public static void main(String[] args) {
KuduClient.KuduClientBuilder builder = new KuduClient.KuduClientBuilder("hadoop01");
builder.defaultSocketReadTimeoutMs(5000);
KuduClient client = builder.build();
try {
KuduTable stuTable = client.openTable("student");
KuduScanner scanner = client.newScannerBuilder(stuTable).build();
while(scanner.hasMoreRows()) {
for(RowResult result :scanner.nextRows()) {
int id = result.getInt("id");
String name = result.getString("name");
System.out.println("id:" + id + "...name:" + name);
}
}
} catch (KuduException e) {
e.printStackTrace();
} finally {
try {
client.close();
} catch (KuduException e) {
e.printStackTrace();
}
}
}
}
### --- 编译打印
D:\JAVA\jdk1.8.0_231\bin\java.exe "-javaagent:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\lib\idea_rt.jar=50738:D:\IntelliJIDEA\IntelliJ IDEA 2019.3.3\bin" -Dfile.encoding=UTF-8 -classpath D:\JAVA\jdk1.8.0_231\jre\lib\charsets.jar;D:\JAVA\jdk1.8.0_231\jre\lib\deploy.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\access-bridge-64.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\cldrdata.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\dnsns.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\jaccess.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\jfxrt.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\localedata.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\nashorn.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\sunec.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\sunjce_provider.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\sunmscapi.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\sunpkcs11.jar;D:\JAVA\jdk1.8.0_231\jre\lib\ext\zipfs.jar;D:\JAVA\jdk1.8.0_231\jre\lib\javaws.jar;D:\JAVA\jdk1.8.0_231\jre\lib\jce.jar;D:\JAVA\jdk1.8.0_231\jre\lib\jfr.jar;D:\JAVA\jdk1.8.0_231\jre\lib\jfxswt.jar;D:\JAVA\jdk1.8.0_231\jre\lib\jsse.jar;D:\JAVA\jdk1.8.0_231\jre\lib\management-agent.jar;D:\JAVA\jdk1.8.0_231\jre\lib\plugin.jar;D:\JAVA\jdk1.8.0_231\jre\lib\resources.jar;D:\JAVA\jdk1.8.0_231\jre\lib\rt.jar;E:\NO.Z.80000.Hadoop.project\kudu_project\target\classes;C:\Users\Administrator\.m2\repository\org\apache\kudu\kudu-client\1.4.0\kudu-client-1.4.0.jar;C:\Users\Administrator\.m2\repository\org\apache\kudu\interface-annotations\1.4.0\interface-annotations-1.4.0.jar;C:\Users\Administrator\.m2\repository\com\stumbleupon\async\1.4.1\async-1.4.1.jar;C:\Users\Administrator\.m2\repository\org\slf4j\slf4j-api\1.7.12\slf4j-api-1.7.12.jar com.yanqi.kudu.api.selectDemo
~~~查询到的数据
id:2...name:yanqi
id:1...name:lucas
Walter Savage Landor:strove with none,for none was worth my strife.Nature I loved and, next to Nature, Art:I warm'd both hands before the fire of life.It sinks, and I am ready to depart
——W.S.Landor
分类:
bdv022-kudu
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」