JAVA对kudu的基本操作

来源:互联网 发布:阿里 人工智能平台 编辑:程序博客网 时间:2024/06/05 07:47
package test;import java.util.LinkedList;import java.util.List;import org.apache.kudu.ColumnSchema;import org.apache.kudu.ColumnSchema.ColumnSchemaBuilder;import org.apache.kudu.Schema;import org.apache.kudu.Type;import org.apache.kudu.client.CreateTableOptions;import org.apache.kudu.client.KuduClient;import org.apache.kudu.client.KuduException;/** * kudu创建表 * @author Administrator * */public class CreateTable {    private static ColumnSchema newColumn(String name, Type type, boolean iskey) {        ColumnSchemaBuilder column = new ColumnSchema.ColumnSchemaBuilder(name, type);        column.key(iskey);        return column.build();    }    public static void main(String[] args) throws KuduException {        // master地址        final String masteraddr = "192.168.0.128";        // 创建kudu的数据库链接        KuduClient client = new KuduClient.KuduClientBuilder(masteraddr).defaultSocketReadTimeoutMs(6000).build();        // 设置表的schema        List<ColumnSchema> columns = new LinkedList<>();        columns.add(newColumn("CompanyId", Type.INT16, true));        columns.add(newColumn("WorkId", Type.INT16, false));        columns.add(newColumn("Name", Type.STRING, true));        columns.add(newColumn("Gender", Type.STRING, false));        columns.add(newColumn("Desc", Type.STRING, false));        columns.add(newColumn("Photo", Type.BINARY, false));        Schema schema = new Schema(columns);        //创建表时提供的所有选项        CreateTableOptions options = new CreateTableOptions();        // 设置表的replica备份和分区规则        List<String> parcols = new LinkedList<>();        parcols.add("CompanyId");        // 一个replica        options.setNumReplicas(1);        // 用列companyid做为分区的参照        options.setRangePartitionColumns(parcols);        // 添加key的hash分区        //options.addHashPartitions(parcols, 3);        try {            client.createTable("PERSON", schema, options);        } catch (KuduException e) {            e.printStackTrace();        }        client.close();    }}
package test;import org.apache.kudu.client.KuduClient;import org.apache.kudu.client.KuduException;import org.apache.kudu.client.KuduPredicate;import org.apache.kudu.client.KuduScanner;import org.apache.kudu.client.KuduSortScanerBuilder;import org.apache.kudu.client.KuduPredicate.ComparisonOp;import org.apache.kudu.client.KuduTable;import org.apache.kudu.client.RowResult;import org.apache.kudu.client.RowResultIterator;import org.apache.kudu.client.KuduScanner.KuduScannerBuilder;/** * 按条件搜索 * @author Administrator * */public class FindRow {    public static void main(String[] args) throws KuduException {        //master地址        final String masteraddr = "192.168.0.128";        //创建kudu的数据库链接        KuduClient client = new KuduClient.KuduClientBuilder(masteraddr).defaultSocketReadTimeoutMs(6000).build();        //打开表        KuduTable table = client.openTable("PERSON");        /**         * 设置搜索的条件         */        KuduScannerBuilder builder = client.newScannerBuilder(table);        //newComparisonPredicate 在一个整数或时间戳列上创建一个新的比较谓词。        KuduPredicate predicate = KuduPredicate.newComparisonPredicate(table.getSchema().getColumn("CompanyId"),                ComparisonOp.EQUAL, 1);        builder.addPredicate(predicate);        // 设置排序        KuduSortScanerBuilder.setSort(builder);        // 开始扫描        KuduScanner scaner = builder.build();        while (scaner.hasMoreRows()) {            RowResultIterator iterator = scaner.nextRows();            while (iterator.hasNext()) {                RowResult result = iterator.next();                /**                 * 输出行                 */                System.out.println("CompanyId:" + result.getInt("CompanyId"));                System.out.println("Name:" + result.getString("Name"));                System.out.println("Gender:" + result.getString("Gender"));                System.out.println("Desc:" + result.getString("Desc"));            }        }        scaner.close();        client.close();    }}
package test;import org.apache.kudu.client.Insert;import org.apache.kudu.client.KuduClient;import org.apache.kudu.client.KuduException;import org.apache.kudu.client.KuduSession;import org.apache.kudu.client.KuduTable;import org.apache.kudu.client.SessionConfiguration.FlushMode;/** * kudu的插入 * @author Administrator * */public class InsertRow {    public static void main(String[] args) throws KuduException {        // master地址        final String masteraddr = "192.168.0.128";        // 创建kudu的数据库链接       KuduClient client = new KuduClient.KuduClientBuilder(masteraddr).build();        // 打开表        KuduTable table = client.openTable("PERSON");        Insert insert = table.newInsert();        // 创建写session,kudu必须通过session写入        KuduSession session = client.newSession();        // 采取Flush方式 手动刷新        session.setFlushMode(FlushMode.MANUAL_FLUSH);        session.setMutationBufferSpace(3000);        for (int i = 1; i < 10001; i++) {            // 设置字段内容            insert.getRow().addInt("CompanyId", i);            insert.getRow().addInt("WorkId", i);            insert.getRow().addString("Name", "lisi" + i);            insert.getRow().addString("Gender", "male");            insert.getRow().addString("Desc", "desc of the person"+ i);            insert.getRow().addBinary("Photo", "person".getBytes());        }        session.flush();        session.apply(insert);        session.close();        client.close();    }}
阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 我在碧蓝修舰娘 满身盐的鱼 女配修仙会当凌绝顶 九月满 满朝王爷一锅端 满级开始的修真生活 狍子与锅 锅出溜 地锅 炊锅 烧锅 冠滢滢作品 滢怎么读 滢组词 欧阳巧滢 赖滢羽 丁笑滢 滢的意思 童宁超滢特工队播放 项滢璇 带滢字的女孩名字 滢格净水机 滢水山庄二区房价 滤水 滤嘴 砂滤器 空滤器 水滤器 滤筒式除尘器厂家 粉末回收滤筒除尘器 超滤膜过滤器 脉冲式滤筒除尘器 立式滤筒除尘器 滤筒除尘器生产厂家 滤筒除尘器哪家好 除尘器滤袋 滤筒除尘器厂家 空气滤器 工业滤筒除尘器 空气预滤器 滤袋式除尘器 机油集滤器 空滤器总成