Kudu 使用_Java API_插入数据 | 学习笔记

简介: 快速学习 Kudu 使用_Java API_插入数据

开发者学堂课程【2020版大数据实战项目之DMP广告系统(第三阶段)Kudu 使用_Java API_插入数据学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/678/detail/11782


Kudu 使用_Java API_插入数据


内容介绍:

一、如何插入数据

 

已经介绍了如何操作表,如何创建表,接下来要了解的是如何操作数据,也就是如何插入数据,依然使用 kudu Java API 进行数据的插入。一个是针对表的操作,一个是针对数据的操作,针对表的操作必须要分区,还必须提供 schema 信息,在插入数据的时候有什么样的限制呢?一起去了解一下。

 

一、如何插入数据

1、创建 KuduContext 对象

创建这个对象是为了能够操作 kudu Java API,也就是 KuduContext 其实是作为一个 API 的入口存在的。

2、创建 Table 对象来表示一张表

表示完表以后,针对 table的操作,面向对象是什么意思?有一个table 的对象,代表了 kudu 当中的一张表,对 table 对象的操作最终也会落到 kudu 当中,这就是表的意义。

3、创建 Parial Row 对象来表示要插入的数据

可以通过 table 对象创建 Parial Row 这样一个对象,这个对象说的是一部分行,就是一行的一部分数据,然后通过这个对象表示要插入的数据。

4、开启会话,使插入生效(传给 Kudu)

封装完数据以后就可以开启会话,然后插入生效。

这四个步骤是有一些逻辑的,最终是要开启会话让插入生效,但是开启会话以后要生效的是什么操作,是插入删除还是修改等等,要通过 Parial Row 这个对象来表示,这个对象是不是针对于某一张表的操作?针对于某一张表的操作,要使用 table 对象的方法,既然要得到一张表的对象,就必须使用 KuduContext,是环环相扣的。

@Test

def insertData(): Unit = {

val KUDU_ MASTER ="192.168.169.101:7051"

val kuduClient = new KuduClientBuilder(KUDU_ MASTER).build()

//得到表对象,表示对一个表进行操作

val table = kuduClient.openTable( name = "simple")

//表示操作,组织要操作的行数据

val insert = table.newInsert()

val row = insert.getRow

row.addstring( columnIndex= 0val = "A")

row.addstring( columnIndex= 1val = "1")

//开启会话开始操作

val session = kuduClient.newSession()

session.apply(insert)

}

}

接下来就去创建对应的方法,写下代码,首先还是 Test,然后 def,再去创建方法,这个方法叫做 insertDatainsertDate 第一步是创建 KuduContext,直接拿到 kuduClientkuduClient 怎么创建呢?New 一个 kuduclientbuilder,然后向其中提供 master 列表,直接把这两行代码拷过来就可以了,

val KUDU_MASTER = "192.168.169.101: 7051"

val kuduClient = new KuduClientBuilder(KUDU_ MASTER).build()

这是第一步。接下来可以得到表对象,表示对一个表进行操作,这是面向对象的思想。接下来还可以表示操作,组织要操作的行数据。第三步就可以开启会话,开始操作。

这是大概步骤,如果是这样的话,可以先去得到表对象,起码要告诉 kudu 要操作的是哪一张表。不要小瞧面向对象的操作,其实评价一个好的开发者和不好的开发者主要是有一个非常重要的点,就是它对于面向对象的理解,注意是面向对象的理解而不是对设计模式的掌握。因为过度的应用设计模式是对整体结构的一种破坏,在为了做一件事而去做一件事,后果是得不偿失的。但是如果能重视软件开发的六大原则,面向对象的六大原则,那么其实能写出比较好的代码,比如单一职责、理事转换。通过得到表的这一点,就是在看到这 kudu 提供 API 的时候,应该想这个 API 是怎么应用面向对象的,从而不断的提高自己面向对象的能力。但是面向对象不是过度设计,不要为了去面向对象而面向对象,是没有意义的。

kuduClient open 一个tableopenTable 的时候指定一下名字叫做 simple,这个 table 就得到了一个 table 对象,得到这个 table 对象以后可以针对于 table 对象 new 一个 insert,之后会得到一个 insert 对象。点进 newInsert

image.png

得到了一个 insert 对象,其实要做的操作就是一个 insert,也就是插入的一个操作。如果是这样的话,要插入什么是通过 insert 的对象来去.getRow 获取一个行对象,获取一个行对象以后就得到一个 row,通过这个行对象,向这个行对象当中增加内容,就相当于增加到了这个 insert 当中,row 对象代表一个行,针对于这个 row 对象来操作就是操作到这个行上了。从 insert 当中得到的这个行,所以就隐含了是一个插入。在这个 row 当中可以 addStringkudu 当中,它在操作这个表的时候 API 比较像 h base的,所以需要指定 columnIndex,要告诉它现在向第0列当中增加一个数据叫做 A,然后再向行当中添加 addstring,添加到第1个位置,添加内容叫 val = "1",这样就处理好了这个 row

之后就可以开启会话,因为 kudu 虽然不是关系型数据库,但是这些no circle 的数据库都在试图去支持一些事务,因为这个 show 很多时候一些简单的事务还是要用到的。虽然分布式事务之类的东西是不太容易见得到,但是简单的事务有的时候还是有必要的。开启这个会话,直接得到一个session 对象,通过 kuduClient,然后 new 一个 session 对象,之后可以 session.apply 去应用一个操作,这个操作是 insert 操作,这样插入数据的 API 就搞定了。

运行一下,等待它的运行结果。

image.png

有几个常见的错误,这个错误也是希望大家看到的,这个时候它报的这个错误意思是 cdh02.itcast.cn 这个 IP 获取不到 can not resolve,为什么刚才创建表的时候没有报这个错误,现在报呢?因为现在需要向具体的某一个 cdh02部署的是一个 tablet server, 要具体的向某一个 tablet server 当中的某一个 tablet 当中插入数据的时候就会出现这种问题,这种问题是因为整个过程是这样的,在创建表的时候,这有三台服务器,

image.png

这是 master,这是 cdh02,这是 cdh03,这是 master,这是两个 tablet server,在客户端当中创建表的时候它只需要跟 master 进行沟通说要创建一个表,那么 master 会去来这找它一下,来这找它一下,创建出来对应的 tablet server

插入数据的过程先要知道 master 要往哪个表里面插数据,master 会告诉表在哪个 tablet server 里,再去连对应的tablet server 来进行数据的插入,如果是这样的话,就要在客户端、程序当中连接服务器了,现在不能连接,因为它返回的IP是什么,返回的 hosts ch02.itcast.cn,解决这种问题的方式为打开我的电脑,然后进入到 C 盘当中,思路就是要去找到 hosts 文件,把刚才那一串东西配到 hosts 文件里,让你在本机上可以访问,可以通过主机名访问到虚拟机,这就可以了。这个时候找到 Windows,往下找一个 system32,再往下去找一个 drivers,之后再去找 etc,然后找到这个 hosts 文件,直接复制到桌面上,使用 Atom 打开 hosts 文件,打开了以后把 hosts 文件拉进来,然后修改这个 hosts

image.png

192.168.169.101 cdh01.itcast.cn,复制两遍,102对应的是 cdh02,103对应的是 cdh03,保存一下,然后用 Windows+D 回到桌面,复制这个文件,然后打开这个 etc 的目录,把刚才这个文件粘贴进来,

image.png

替换目标的 hosts 文件,这个时候就已经搞定了。其实就是在本机,让它能够通过域名、通过 FQDN 访问到虚拟机,通过主机名访问到虚拟机就可以。

这个时候再重新运行一下,

image.png

这时已经没有任何报错了,说明数据已经插入了。

相关文章
|
1月前
|
前端开发 JavaScript Java
java常用数据判空、比较和类型转换
本文介绍了Java开发中常见的数据处理技巧,包括数据判空、数据比较和类型转换。详细讲解了字符串、Integer、对象、List、Map、Set及数组的判空方法,推荐使用工具类如StringUtils、Objects等。同时,讨论了基本数据类型与引用数据类型的比较方法,以及自动类型转换和强制类型转换的规则。最后,提供了数值类型与字符串互相转换的具体示例。
|
1天前
|
JSON 前端开发 搜索推荐
关于商品详情 API 接口 JSON 格式返回数据解析的示例
本文介绍商品详情API接口返回的JSON数据解析。最外层为`product`对象,包含商品基本信息(如id、name、price)、分类信息(category)、图片(images)、属性(attributes)、用户评价(reviews)、库存(stock)和卖家信息(seller)。每个字段详细描述了商品的不同方面,帮助开发者准确提取和展示数据。具体结构和字段含义需结合实际业务需求和API文档理解。
|
13天前
|
存储 Java BI
java怎么统计每个项目下的每个类别的数据
通过本文,我们详细介绍了如何在Java中统计每个项目下的每个类别的数据,包括数据模型设计、数据存储和统计方法。通过定义 `Category`和 `Project`类,并使用 `ProjectManager`类进行管理,可以轻松实现项目和类别的数据统计。希望本文能够帮助您理解和实现类似的统计需求。
55 17
|
4天前
|
JSON Java 数据挖掘
利用 Java 代码获取淘宝关键字 API 接口
在数字化商业时代,精准把握市场动态与消费者需求是企业成功的关键。淘宝作为中国最大的电商平台之一,其海量数据中蕴含丰富的商业洞察。本文介绍如何通过Java代码高效、合规地获取淘宝关键字API接口数据,帮助商家优化产品布局、制定营销策略。主要内容包括: 1. **淘宝关键字API的价值**:洞察用户需求、优化产品标题与详情、制定营销策略。 2. **获取API接口的步骤**:注册账号、申请权限、搭建Java开发环境、编写调用代码、解析响应数据。 3. **注意事项**:遵守法律法规与平台规则,处理API调用限制。 通过这些步骤,商家可以在激烈的市场竞争中脱颖而出。
|
7天前
|
监控 API 数据处理
速卖通商品数据尽在掌握:揭秘高效利用API接口获取详情策略
速卖通(AliExpress)API助力电商数据处理与分析,提供商品搜索、价格监控等功能。开发者需注册账号、创建应用并获取API Key。常用接口包括商品搜索和详情API。调用时注意频率限制、数据延迟及错误处理。本文介绍全过程并附Python示例代码,帮助提升电商运营效率。
|
21天前
|
JSON Java Apache
Java基础-常用API-Object类
继承是面向对象编程的重要特性,允许从已有类派生新类。Java采用单继承机制,默认所有类继承自Object类。Object类提供了多个常用方法,如`clone()`用于复制对象,`equals()`判断对象是否相等,`hashCode()`计算哈希码,`toString()`返回对象的字符串表示,`wait()`、`notify()`和`notifyAll()`用于线程同步,`finalize()`在对象被垃圾回收时调用。掌握这些方法有助于更好地理解和使用Java中的对象行为。
|
20天前
|
数据采集 数据可视化 前端开发
怎么通过API获取电竞赛事实时数据
选择合适的电竞数据API是开发电竞应用的关键。主流API包括OP.GG、Liquipedia、Stratz、Riot Games和熊猫比分,涵盖LOL、DOTA2等游戏的实时数据。注册并获取API密钥后,需仔细阅读文档,了解资源、请求方法、必需参数及响应格式。编写代码调用API时,注意优化请求频率,避免封禁。最后,通过Web界面或可视化工具展示数据,如React/D3.js、Tableau等。示例代码展示了如何使用熊猫比分API获取即将开始的比赛信息。
|
17天前
|
供应链 监控 API
1688.item_search_shop API:开启电商数据新纪元
1688.item_search_shop API是阿里巴巴1688平台提供的核心接口之一,支持根据关键词搜索指定店铺的商品,并获取商品详情、图片、价格等信息。该API允许设定搜索结果排序方式,如按销量或价格排序,满足不同需求。开发者可将其集成到电商应用中,提升用户体验;市场分析人员可利用其进行趋势和竞争对手分析;供应链管理人员则能监控库存,优化策略。示例代码展示了如何使用Python调用该API,帮助开发者快速上手。这一API的推出标志着B2B电商领域商品搜索技术的重要进步,推动行业向更高效、智能的方向发展。
|
27天前
|
数据采集 监控 数据挖掘
常用电商商品数据API接口(item get)概述,数据分析以及上货
电商商品数据API接口(item get)是电商平台上用于提供商品详细信息的接口。这些接口允许开发者或系统以编程方式获取商品的详细信息,包括但不限于商品的标题、价格、库存、图片、销量、规格参数、用户评价等。这些信息对于电商业务来说至关重要,是商品数据分析、价格监控、上货策略制定等工作的基础。
|
1月前
|
算法 Java API
如何使用Java开发获得淘宝商品描述API接口?
本文详细介绍如何使用Java开发调用淘宝商品描述API接口,涵盖从注册淘宝开放平台账号、阅读平台规则、创建应用并申请接口权限,到安装开发工具、配置开发环境、获取访问令牌,以及具体的Java代码实现和注意事项。通过遵循这些步骤,开发者可以高效地获取商品详情、描述及图片等信息,为项目和业务增添价值。
81 10