框架搭建_Kudu工具类_读取表|学习笔记

简介: 快速学习框架搭建_Kudu工具类_读取表

开发者学堂课程【2020版大数据实战项目之DMP广告系统(第四阶段)框架搭建_Kudu工具类_读取表】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/679/detail/11805


框架搭建_Kudu工具类_读取表


内容介绍:

一、代码

二、读取 kudu 表


一、代码

Import org.apache.spark.sql.{datafram,sparksession}

Class kuduhelper{

Private var kuducontext: kuducontext=_

Private var spark : sparksession = _

Private val config = configfactory.load(“kudu”)

Def this(spark:sparksession)={

This()

This spark = spark

//create1:创建 kuducontext

//create2:加载配置文件

Val master =””

Kuducontext = new kuducontext(master,spark,sparkcontext,some(900000))

}

Def this(dateset:dateset[any])={

This(dateset.sparksession)

}

//二:具体功能的开发

//1.创建表

//2.读取表

//3.写入数据

/*1.通过隐式转换,将 sparksession 对象转 kuduhelper 的对象

/*2.通过 kuduhelper 中的 createkudutable()就可以创建一张表

*

*调用方式 spark.createkudutable()

*/

Def createkudutable():unit={

//问题一:kuducontext 来创建

//问题二:kuducontext 创建的时候,需要 kudu 服务器的地址,

//create3:如果存在则删掉旧的表

If(kuducontext.tableexists(tablename)){

Kuducontext.deletetable(tablename)

}

//create4:创建表

Import scala.collection.javaconverters._

Val options=new createtableoptions()

.setnumreplicas(conifg.getint(“kudu.table.factor”))

.addhashpartitions(keys,2)

Kuducontext.createtable(tablename,schema,)

}

/**

*参数: tablename

*返回: dateframe

*/

Def readkudutable(tablename:string):option[dateframe] ={

Import org.apache.kudu.spark.kudu_

If(kuducontext.tableexists(tablename)){

Val result = Spark.read

.option(“kudu.master”,kuducontext.kudumaster)

.option(“kudu.table”,tablename)

.kudu

Some(result)

}else{

None

}

//val m1=map(“”->””)

//val v:option[string]=m1.get(“”)

}

Def savetokudu():unit={

}

}


二、读取 kudu 表

创建库表当中大致了解 kudu 该怎么去访问,接下来就 read 一个 kudu 表。步骤已经明确了了,直接编写这个代码。

第一件事要先想清楚,去创建一个表的时候,读取一个表参数 name 要有。使用spark.read xxx CSV 读出的date frame ,那么返回也应该是 dateframe ,所以把这个方法再完善一下,要接收第一个 table name 就暂定为是一个 string ,返回值应该给 data frame ,那么 table name 和返回值已经有了。就可以直接去读,可以使用 spark.read 要稍微注意一点,是要通过 spark read 但是暂时还没有 spark ,所以第一步应该先把 spark session 放在成员级别。

接下来就要去创建新的成员变量,叫做 spark ,类型是 spark session 为 spark session 进行赋值, spark=spark ,这样其实有一点不合理,所以再加上 This 。大家就能注意到可以进行 spark read 。在 read 的时候,需要传入两个参数,第一个参数,是指定 kudu 的 master , master 要通过 config 来进行读取,也可以通过 kudu context ,读到了 kudu master 这是第一步。

第二步 option ,指定 kudu的 table ,指定一下它的表名。我们表名就是 table name 。其实它也是隐式转换,我们要判断,导入一下隐式转换, Import org.apache.kudu.spark.kudu_ 这样就有 kudu 的隐式转换了。其实这种框架,也会考虑使用隐式转换来进行,通过这一小节,了解了怎么去写 scala 的隐式转换。已经写了两个方法。假如说创建 map ,返回值是什么。例如 string 对象,返回值不是 string 而是 option ,因为 get 有可能取不到内容,如果是这样前面是 get 获取,那么读 table 也是在获取数据,应该直接把东西就写在这,就这样做不合理。 table name 有可能传进来,没有这个表,传进来直接就读,它就会报错。所以不应该直接返回,应该返回 option 对象,还要再写if else 。If (kuducontext. Tableexists (tablename)){ ,判断它是否存在,它如果存在返回对象是 option ,option 两个情况,一个是 some ,还有 none 。应该返回 some ,因为有值。接下来是 else,就是这个表不存在,应该返回 none 这个时候才算搞定,其实也就是我们必须要考虑这个表不存在的这种情况。

相关文章
|
1月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
31 3
|
6月前
|
SQL Java 分布式数据库
实现HBase表和RDB表的转化(附Java源码资源)
该文介绍了如何将数据从RDB转换为HBase表,主要涉及三个来源:RDB Table、Client API和Files。文章重点讲解了RDB到HBase的转换,通过批处理思想,利用RDB接口批量导出数据并转化为`List<Put>`,然后导入HBase。目录结构包括配置文件、RDB接口及实现类、HBase接口及实现类,以及一个通用转换器接口和实现。代码中,`RDBImpl`负责从RDB读取数据并构造`Put`对象,`HBaseImpl`则负责将`Put`写入HBase表。整个过程通过配置文件`transfer.properties`管理HBase和RDB的映射关系。
56 3
实现HBase表和RDB表的转化(附Java源码资源)
|
6月前
|
消息中间件 分布式计算 Kafka
硬核!Apache Hudi中自定义序列化和数据写入逻辑
硬核!Apache Hudi中自定义序列化和数据写入逻辑
149 1
|
6月前
|
SQL 分布式计算 API
Apache Hudi从零到一:深入研究读取流程和查询类型(二)
Apache Hudi从零到一:深入研究读取流程和查询类型(二)
198 1
|
Java
从Excel批量导入数据说到ForkJoin的原理
前面我们介绍了EasyPOI,用其进行Excel导入导出,非常的方便,非常的简单。但是4.0.0 版本以及其之前的版本都是通过单线程的方式对Excel中的数据进行解析的。效率比较差。 今天我将做一个测试,5000条数据,分别使用EasyPOI的方式和自己手写ForkJoin的方式(多任务)的方式来导入,来比较这两者的性能差异。
219 0
从Excel批量导入数据说到ForkJoin的原理
|
6月前
|
存储 分布式计算 分布式数据库
对给定的数据利用MapReduce编程实现数据的清洗和预处理,编程实现数据存储到HBase数据库,实现数据的增删改查操作接口
对给定的数据利用MapReduce编程实现数据的清洗和预处理,编程实现数据存储到HBase数据库,实现数据的增删改查操作接口
51 0
|
SQL 存储 Java
Java实现excel表数据的批量存储(结合easyexcel插件)
Java实现excel表数据的批量存储(结合easyexcel插件)
|
前端开发 关系型数据库 MySQL
Echarts高级进阶教程(5):mysql大数据量分表分区的API接口读取语句
Echarts高级进阶教程(5):mysql大数据量分表分区的API接口读取语句
130 0
|
大数据 数据库 开发者
框架搭建_Kudu工具类_介绍|学习笔记
快速学习框架搭建_Kudu工具类_介绍
104 0
框架搭建_Kudu工具类_介绍|学习笔记
|
存储 NoSQL 分布式数据库
kudu原理_存储原理|学习笔记
快速学习kudu原理_存储原理
156 0
kudu原理_存储原理|学习笔记
下一篇
无影云桌面