Kudu 使用_创建工程 | 学习笔记

简介: 快速学习 Kudu 使用_创建工程

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

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


Kudu 使用_创建工程


内容介绍:

一、使用 Scala 操作 Kudu

 

一、使用 Scala 操作 Kudu

Scala 是基于 JVM 的语言,它的特性是可以和 Java 混用,Scala 操作 Kudu 使用的 Kudu Java API,因为 Scala Java 可以进行相互操作。

1Kudu API 结构设计

(1)Client

全称 Kudu Client,使用 Kudu master 服务器地址列表来创建,作用是Kudu API 主入口,通过 Client 对象获取 Table 后才能操作数据。

操作:

①检查表是否存在;

②提交表的 DDL 操作,create, delete, alter ,在对表进行 DDL 的时候,需要如下两个对象;

③创建 Table 对象,就是 Open Table

(2)Table

通过 Client 对象开启,通过 Table 对象可以操作表中的数据,可以获取行对象,对对象进行 insert, delete, update, upsert,然后进行对于数据的增、删、改、查,

(3)Scanner

专门负责查,也是 Kudu API 提供查的接口,它也是一个对象,通过 Table 对象开启扫描,Table 对象可以获取 ScannerScanner 可以进行相应的查询。

Scanner 中有几个读取模式,比较关键的有两个:

READ_ LATEST,就是读取最后的数据,与 MySQL 中事务隔离级别中的不可重复读 ReadCommitted 相似,它能够保证只读取到已经提交的数据,只会返回已经提交的数据,但是不能保证每一次获取的数据都是一样的。

READ_ AT_ SNAPSHOTSNAPSHOT 就是快照,可以理解为时间戳,它可以读取在这个时间戳的数据,在某一个时间点的数据,这时它能够保证在这个时间点读取的数据第一次和第二次读一定是一样的,类似于可重复读RepeatableRead,但是它性能比较差,比如获取10秒钟之前的数据,就要等待在这个时间点之前所提交的所有的事务全都提交后,才能进行结果的返回。

还有一种模式叫 READ_ YOUR_ WRITES,是试验性的一种模式,尽量不要使用,意思是在每一次查询后确保自己的数据已经提交,把自己提交的所有数据都返回,不管别人是否提交。

2、导入 Kudu 所需要的包

使用 Scanner 操作 Kudu,先创建工程,点击 IDEA 里的 New Project

image.png

然后点击下一步,groupid cn.itcastArtifactld kudu,版本为0.0.1

image.png

放在 DMP Project 下的 Kudu 工程里

image.png

点击 Finish,就创建完这个过程。

image.png

要使用 Kudu Java API,就要导入一些 Kudu 相关的 Maven 依赖。

需要导入如下三个 Maven 插件,Maven 插件是编译时能够做额外事情的插件,第一个插件 maven -compile -plugin,是自动导入的,默认就有,现在需要导入这个插件的目的主要是通过其指定 Java 的版本。还有插件 scala-maven-plugin,主要作用是编译Scala 代码。还有 maven -shade- plugin,需要了解 jar 包的类型,一种叫 non-uber Jar,比如打出来一个 jar 包,不是必备的一些依赖并不会包含在这个 jar 包内,jar 包里只有一些必备的一些代码。之前导过插件 shade- plugin,作用是打一个 uber Jar,也就是胖 Jarnon-uber Jar 可以理解为瘦 Jar,瘦 Jar 里只包含自己写的代码,胖 Jar 里包含所有导入的依赖,但是现在举两个例子,比如要提交 Spark 程序,Spark 在服务器里部署时有一个 lib 目录,lib 目录内有各种各样的 jar 包,这些 Jar 包在 Spark 集群执行任务时会被加载到当前的上下文中,如果打了一个Uber Jar,而 Uber Jar 包含了引入的 Spark,那么和加载的 Jar 包就冲突了,它会把一些可能产生冲突的、依赖的 class 重命名。在提交 spark 任务时可以打一个 Non-Uber Jar,因为 spark 中已经加载了它所必备的一些内容。

3、需要导入一个 Kudu 的依赖包

根据使用 Hadoop 的版本不同, Kudu 的导入方式有两种, 一种是 CDH 版本的依赖,一种是 Apache 版本的依赖,我们当前使用 CDH 版本的依赖,所以需要导入如下包:

<dependency>

<groupId>org.apache.kudu</ groupId>

<artifactId>kudu-client</artifactId>

<version>1.7.0-cdh5.16.1</version>

<scope>provided</scope>

</dependency>

4、整个 Maven 文件如下所示

image.png

拷贝后放进工程中,这样整个初始环境就清楚了。

相关文章
|
XML JSON 安全
RESTful API设计规范
RESTful API设计规范
1302 0
RESTful API设计规范
C# WPF 中 外部图标引入iconfont,无法正常显示问题 【小白记录】
本文介绍了在C# WPF应用程序中引入外部iconfont图标时可能遇到的显示问题及其解决方法:1) 检查资源路径和引入格式是否正确,确保字体文件引用格式为“#xxxx”,并正确指向字体文件位置;2) 确保图标资源被包含在程序集中,通过设置字体文件的生成操作为Resource(资源)来实现。
C# WPF 中 外部图标引入iconfont,无法正常显示问题 【小白记录】
|
机器学习/深度学习 人工智能 算法
AI - 决策树模型
决策树算法起源于古希腊的逻辑推理,20世纪在军事策略研究中首次提出。它通过构建树形模型模拟决策过程,每个节点代表一个属性判断,分支代表可能结果。ID3算法基于信息增益,C4.5则引入信息增益率,解决了ID3偏好多值属性的问题,还能处理缺失值。CART决策树适用于分类和回归任务,使用基尼系数或信息增益来选择特征。在Python的`sklearn`库中,`DecisionTreeClassifier`实现决策树分类,通过参数如`criterion`、`max_depth`等控制模型。
|
机器学习/深度学习 人工智能 自然语言处理
趋势来袭!大模型时代的文档图像发展与图像安全剖析
趋势来袭!大模型时代的文档图像发展与图像安全剖析
224 1
|
大数据 Java Go
Go语言在大数据处理中的核心技术与工具
【2月更文挑战第22天】本文深入探讨了Go语言在大数据处理领域的核心技术与工具。通过分析Go语言的并发编程模型、内存管理、标准库以及第三方工具库等方面,展现了其在大数据处理中的优势和实际应用。同时,本文也讨论了如何使用这些技术与工具构建高效、稳定的大数据处理系统,为开发者提供了有价值的参考。
|
数据挖掘 网络安全
如何设置代理IP的并发数?
如何设置代理IP的并发数?
180 0
|
数据可视化 JavaScript 关系型数据库
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(五)FineBI可视化
基于Flume+Kafka+Hbase+Flink+FineBI的实时综合案例(五)FineBI可视化
296 0
|
前端开发
「趣学前端」画饼充饥,送给我好友的瓶瓶罐罐
技术有趣的其中一面便是给身边的朋友,带去一些不一样的体验。包括但是不限于搞怪。一个简单又有趣的前端效果,跟朋友友好(beida)的互动一下。
142 1
详解CAN总线:高速CAN总线和低速CAN总线的特性
在ISO 11898-2和ISO 11898-3中分别规定了两种CAN总线结构(在BOSCH CAN2.0规范中,并没有关于总线拓扑结构的说明):高速CAN总线和低速CAN总线,本篇博文将详细介绍两者的特性和区别。