kudu java_java操作kudu 增删改查

maven导入依赖

org.apache.kudu

kudu-spark2_2.11

1.10.0-cdh6.3.0

org.apache.kudu

kudu-client

1.10.0

增删改查

/**

* @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 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 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 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);

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值