import org.apache.kudu.Schema;
import org.apache.kudu.client.*;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Random;
/**
* @ Author: ChengYanan
* @ Date: 2019/5/31 11: 39
* @ Description :KUDU API TEST
*/
public class KuduTest {
public static void main(String[] args) throws KuduException {
final String master = "test03";
KuduClient client = new KuduClient.KuduClientBuilder(master).build();
//打開表
KuduTable sparrow_test = client.openTable("sparrow_test");
scanTable(client, sparrow_test);
System.out.println("*************************************");
insetRow(client,sparrow_test);
System.out.println("==============================================");
updateTable(client, sparrow_test);
scanTable(client, sparrow_test);
System.out.println("++++++++++++++++++++++++++++++++++++++++++++++++");
deleteRow(client,sparrow_test);
scanTable(client, sparrow_test);
searchRowWithRange(client, sparrow_test);
searchWithCondition(client, sparrow_test);
}
//更改表數(shù)據(jù)
public static void updateTable(KuduClient client, KuduTable table) throws KuduException {
KuduSession kuduSession = client.newSession();
kuduSession.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH);
Update update = table.newUpdate();
PartialRow row = update.getRow();
row.addInt("id", 1);
row.addString("name", "cheng");
kuduSession.apply(update);
kuduSession.flush();
kuduSession.close();
}
//插入數(shù)據(jù)
public static void insetRow(KuduClient client, KuduTable table) throws KuduException {
KuduSession kuduSession = client.newSession();
//設(shè)置手動刷新
kuduSession.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH);
kuduSession.setMutationBufferSpace(3000);
double v = new Random().nextDouble();
for (int i = 1; i < 10; i++) {
Insert insert = table.newInsert();
insert.getRow().addInt("id", i);
insert.getRow().addString("name", i + "號");
insert.getRow().addDouble("score", Double.parseDouble(new DecimalFormat("#.0").format(new Random().nextDouble() * 100)));
kuduSession.flush();
kuduSession.apply(insert);
}
kuduSession.close();
}
//遍歷整張表
public static void scanTable(KuduClient client, KuduTable table) throws KuduException {
//創(chuàng)建scanner
KuduScanner scanner = client.newScannerBuilder(table).build();
//遍歷數(shù)據(jù)
while (scanner.hasMoreRows()) {
for (RowResult rowResult : scanner.nextRows()) {
System.out.println("scan table: >>>>>>>" + rowResult.getInt(0) + "\t" + rowResult.getString(1)
+ "\t" + rowResult.getDouble(2));
}
}
}
//刪除指定行
public static void deleteRow(KuduClient client, KuduTable table) throws KuduException {
KuduSession kuduSession = client.newSession();
//設(shè)置手動刷新
kuduSession.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH);
Delete delete = table.newDelete();
delete.getRow().addInt("id", 5);
kuduSession.apply(delete);
kuduSession.flush();
kuduSession.close();
}
//kudu 按照范圍查詢數(shù)據(jù)
public static void searchRowWithRange(KuduClient client, KuduTable table) throws KuduException {
//創(chuàng)建一個數(shù)組,并添加相應(yīng)的表字段
ArrayList<String> projectColumns = new ArrayList<String>();
projectColumns.add("id");
projectColumns.add("name");
projectColumns.add("score");
Schema schema = table.getSchema();
PartialRow partialRow = schema.newPartialRow();
partialRow.addInt("id", 1);
PartialRow partialRow1 = schema.newPartialRow();
partialRow1.addInt("id", 5);
KuduScanner scanner = client.newScannerBuilder(table)
.setProjectedColumnNames(projectColumns) //指定輸出列
.lowerBound(partialRow) //指定下限(包含)
.exclusiveUpperBound(partialRow1) //指定上限(不包含)
.build();
while (scanner.hasMoreRows()) {
for (RowResult rowResult : scanner.nextRows()) {
System.out.println("range scanner: " + rowResult.getInt(0) + "\t" + rowResult.getString(1)
+ "\t" + rowResult.getDouble(2));
}
}
}
//按照條件查詢數(shù)據(jù)
public static void searchWithCondition(KuduClient client, KuduTable table) throws KuduException {
Schema schema = table.getSchema();
//創(chuàng)建一個數(shù)組,并添加相應(yīng)的表字段
ArrayList<String> projectColumns = new ArrayList<String>();
projectColumns.add("id");
projectColumns.add("name");
projectColumns.add("score");
//創(chuàng)建predicate
KuduPredicate kuduPredicate = KuduPredicate.newComparisonPredicate(schema.getColumn("id"),
KuduPredicate.ComparisonOp.EQUAL, 1);
KuduScanner kuduScanner = client.newScannerBuilder(table)
.readMode(AsyncKuduScanner.ReadMode.READ_AT_SNAPSHOT) //設(shè)置讀取快照模式
.setProjectedColumnNames(projectColumns) //設(shè)置要讀取的列
.addPredicate(kuduPredicate) //設(shè)置predicate
.build();
while (kuduScanner.hasMoreRows()) {
for (RowResult rowResult : kuduScanner.nextRows()) {
System.out.println("range scanner: " + rowResult.getInt(0) + "\t" + rowResult.getString(1)
+ "\t" + rowResult.getDouble(2));
}
}
}
//添加列 刪除列 修改列 都是這個API,調(diào)用AlterTableOptions的不同方法來實(shí)現(xiàn)
private static void addColumn(String columnName, Type columnType) {
try {
kuduClient.alterTable(kuduTable.getName(),
new AlterTableOptions().addNullableColumn(columnName, columnType));
} catch (KuduException e) {
e.printStackTrace();
}
}
}
Kudu Java API Test
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
相關(guān)閱讀更多精彩內(nèi)容
- You can use Anypoint Studio to change, mock, and test an ...
- 了解在設(shè)計(jì) Java API 時應(yīng)該運(yùn)用的一些 API 設(shè)計(jì)實(shí)踐。這些實(shí)踐通常很有用,而且可確保 API 能在諸如...
- 1、接口測試的類型:get/post/delete/put 2、post和get的區(qū)別: a、get參數(shù)寫在...
- 2018-11-30 姓名:符振華(378期 反省三組) 公司:深圳蔚藍(lán)時代商業(yè)管理有限公司-上海第一分公司 【日...