点一下关注吧!!!非常感谢!!持续更新!!!
目前已经更新到了:
Hadoop(已更完)
HDFS(已更完)
MapReduce(已更完)
Hive(已更完)
Flume(已更完)
Sqoop(已更完)
Zookeeper(已更完)
HBase(已更完)
Redis (已更完)
Kafka(已更完)
Spark(已更完)
Flink(已更完)
ClickHouse(已更完)
Kudu(正在更新…)
章节内容
上节我们完成了如下的内容:
Apache Kudu 的 Dockerfile
Dockerfile 详解
Kudu 启动访问
新建工程
由于重复了太多次,这里直接跳过了。
导入依赖
<dependency> <groupId>org.apache.kudu</groupId> <artifactId>kudu-client</artifactId> <version>1.4.0</version> </dependency>
创建新表
- 必须指定表连接到的Master节点主机名
- 必须定义Schema
- 必须指定副本数量、分区策略、数量
编写代码
package icu.wzk.kudu; import org.apache.kudu.ColumnSchema; 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; import java.util.ArrayList; import java.util.List; public class KuduCreateTable { public static void main(String[] args) throws KuduException { String masterAddress = "localhost:7051,localhost:7151,localhost:7251"; KuduClient.KuduClientBuilder kuduClientBuilder = new KuduClient.KuduClientBuilder(masterAddress); KuduClient kuduClient = kuduClientBuilder.build(); String tableName = "student"; List<ColumnSchema> columnSchemas = new ArrayList<>(); ColumnSchema id = new ColumnSchema .ColumnSchemaBuilder("id", Type.INT32) .key(true) .build(); columnSchemas.add(id); ColumnSchema name = new ColumnSchema .ColumnSchemaBuilder("name", Type.STRING) .key(false) .build(); columnSchemas.add(name); Schema schema = new Schema(columnSchemas); CreateTableOptions options = new CreateTableOptions(); // 副本数量为1 options.setNumReplicas(1); List<String> colrule = new ArrayList<>(); colrule.add("id"); options.addHashPartitions(colrule, 3); kuduClient.createTable(tableName, schema, options); kuduClient.close(); } }
测试运行
控制台未输出内容
运行结果如下图所示:
查看Kudu
我们查看Kudu的Tables,可以看到刚才创建的表如下:
删除表
编写代码
package icu.wzk.kudu; import org.apache.kudu.client.KuduClient; import org.apache.kudu.client.KuduException; public class KuduDeleteTable { public static void main(String[] args) throws KuduException { String masterAddress = "localhost:7051,localhost:7151,localhost:7251,"; KuduClient client = new KuduClient.KuduClientBuilder(masterAddress) .defaultAdminOperationTimeoutMs(5000) .build(); client.deleteTable("student"); client.close(); } }
测试运行
控制台没有输出内容,这里运行截图如下:
查看Kudu
查看Kudu服务的 Table 页,里边的数据表已经删除了。
插入数据
- 获取客户端
- 打开一张表
- 创建会话
- 设置刷新模式
- 获取插入实例
- 声明带插入的数据
- 刷入数据
- 应用插入实例
- 关闭会话
创建新表
我们运行刚才的创建新表代码,把student表先生成出来,具体运行这里跳过了。
编写代码
package icu.wzk.kudu; import org.apache.kudu.client.*; public class KuduInsert { public static void main(String[] args) throws KuduException { String masterAddr = "localhost:7051,localhost:7151,localhost:7251"; KuduClient client = new KuduClient .KuduClientBuilder(masterAddr) .defaultAdminOperationTimeoutMs(5000) .build(); KuduTable stuTable = client.openTable("student"); KuduSession kuduSession = client.newSession(); kuduSession.setFlushMode(SessionConfiguration.FlushMode.MANUAL_FLUSH); Insert insert = stuTable.newInsert(); insert.getRow().addInt("id", 1); insert.getRow().addString("name", "wzk"); kuduSession.flush(); kuduSession.apply(insert); kuduSession.close(); client.close(); } }
测试运行
控制台没有输出任何内容,运行过程截图如下: