自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 收藏
  • 关注

原创 日常用到的spark调优

日常用到的spark调优1.如果使用spark读取mysql中的表格写进数仓中,可以先将限制条件或者整个sql先写进jdbc连接参数中。如果是将mysql整个表读入内存中再建立临时表,如果mysql的表过大,反而会占用更多内存,所以可以提前先将结果的数据读进来直接write进数仓中。val callmysql = s" select '会议' as module,'正常通话率' as metrics_type,'ads_voip_sample' as original_table,avg(metr

2020-12-04 11:45:38 185

原创 数据仓库笔记

1.1数据获取与数据分析的区别操作型数据库保存数据,对操作性系统进行优化的目的是使其能够更快地处理事务,不必维护历史数据,只需修改数据反映最新状态比如签订新客户的原因,了解客户在抱怨什么等DW/BI系统使用数据,维护批次数据,通过各批次的数据对比,去分析比如签订新客户的原因,了解客户在抱怨什么等1.2数仓的目标数仓要方便的存取信息:数据需要有直观性,数据结构与标识需要针对开发人员和业务人员都能理解,并能尽快查询出结果一致形式展现信息:数仓中的公共标识和定义,可以再不同数据源公用,两个关于性.

2021-09-07 17:25:28 131

原创 spark-Action算子

countReturn the number of elements in the RDD.这个算子就是来算一下所有分区有多少条数据,因为底层调用了runJob方法,所以是一个Action方法package com.doit.spark.day05import org.apache.spark.{SparkConf, SparkContext}object Count { def main(args: Array[String]): Unit = { val conf =

2020-08-10 22:39:35 220

原创 Spark-算子之shuffle类

groupByKey这个方法生成新的stage,并且源代码是写在PairRDDFunctions中,不是调用新建一个MapPartitionsRDD了,这个方法是map端和reduce端得交互,map端处理完数据会先将数据ShuffleWrite溢写到map端得磁盘,然后reduce端通过网络进行拉取ShuffleRead过来之于为什么OutPut会变少,是因为输出的文件 key都合并了 没有之前那么多key了 但是value还是之前那么多还有一个问题值得讨论,就是怎么定的分区规则,其实如...

2020-08-09 21:24:51 270

原创 Spark之算子及解析

两个创建RDD的方法是完全一样的val conf = new SparkConf().setAppName("MapPartitionsDemo").setMaster("local[*]") val sc = new SparkContext(conf) //创建RDD val rdd1 = sc.makeRDD(List(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), 3) //makeRDD的源码 /** Distribute a loc

2020-08-09 16:36:24 266

原创 spark--RDD

RDD是一个弹性、可复原的分布式的数据集RDD中装的数据是数据的描述信息,描述了从哪读数据,调用什么方法,传入什么函数,一级依赖关系等RDD特点:1.有一些连续的分区:分区编号从0开始,分区数量决定了Task的并行度(每一个分区中都有一个task,一个executor中可以有很多个tsak同时运行)2.有一个函数作用在每个输入切片上(每一个要处理的文件从hdfs中传输过来足够大的时候是会出现很多物理切片的,都遵循同一个RDD或一系列依赖的RDD中储存的逻辑来进行分析)3.RDD和RDD.

2020-08-06 14:31:22 126

原创 spark-WordCount案例

Scala程序package com.doit.spark.day01import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object WordCount { def main(args: Array[String]): Unit = { //创建SparkContext val conf = new SparkConf().setAppName("WordCoun

2020-08-05 21:44:54 169

原创 scala之逆变、协变

//负号:逆变.方法的输入,用-修饰,是scala中的一种泛型,//正号:协变.方法的输出,用+修饰是scala中的一种泛型在trait中定义的方法,参数列表为逆变,方法返回的数据类型为协变package com.doit.scala.yinshizhuanhuan//负号:逆变.方法的输入//正号:协变.方法的输出trait Function1[-A,+B] { def test(a:A):B}object Func1Test{ def main(args: Array.

2020-08-02 00:24:04 231

原创 scala之泛型

视图界定 <%<% 有隐式转换package com.doit.scala.yinshizhuanhuan/* [T <: Comparable[T]] 上界 upper bound java: <T extends Comparable>* [T >: Comparable[T]] 下界 lower bound java: <T super Comparable>* [T <% Comparable] 视...

2020-08-02 00:16:01 144

原创 scala之隐式转换

科里化函数package com.doit.scala.day05object KeliDemo { def k(x: Int)(y:Int): Int ={ println("aaa") x+y } def k2(x: Int)(implicit y: Int = 10) = {x+y} def k3(x: Int = 10)(y: Int) = {x+y} def main(args: Array[String]): Unit = { val f

2020-08-01 11:52:59 138

原创 akka 代码实现

整体的代码逻辑1.Worker开机之后会连接并向Master注册信息(也就是发送自己的信息)2.Master接收到信息之后,会将worker的信息存到专门存储workers信息的hashmap中,再返回给worker一个连接成功的信息3.worker接受到注册成功的信息之后开始向master定时输出心跳信息,但是又不能直接定时给master发送心跳,只能定时给自己发送信息,每次接受到这个信息之后,自己就会给master发送心跳信息(带有worker的id信息)4.master会就收到带.

2020-07-31 18:27:22 194

原创 akka简介

akka可以比作学生和老师1,学生和老师都是Actor,Actor是用来收发消息,处理逻辑2.教学总监和班主任:ActorSystem,它是用来创建Actor的,并且监控和管理他创建的Actor3.ActorSystem是单例的,一个进程中只要有一个即可4.Actor是多例的,可以创建多个实例5.Actor编程模式就通过发送消息来并发实现的Akka就是基于Actor编程迷行实现的,可以是单机,也可以是分布式的...

2020-07-30 11:43:57 150

原创 scala之模式匹配

匹配字符串import scala.util.Randomobject CaseDemo1 { val arr = Array("YoshizawaAkiho", "YuiHatano", "AoiSola") val name: String = arr(Random.nextInt(arr.length)) println(s"name is:$name") name match { case "YoshizawaAkiho" => println("吉泽")

2020-07-29 22:55:07 2393

原创 scala之面向对象

package com.doit.scala.day03class User { val id = 100010 val name = "tom" //如果是var修饰的,就相当于自带了gettersetter方法 var age = 18 //被private修饰的 只能在此文件夹中使用 private var money: Double = 1000 //被private[this]修饰的只能在此class中使用 private[this] var password.

2020-07-29 21:46:00 104

原创 scala基础语法(三)

几种集合:Array,ArrayBuffer\List,ListBuffer\Set,HashSet\Map,HashMapArraypackage com.doit.scala.Break01object ArrayDemo1 { def main(args: Array[String]): Unit = { //定义一个通用数组 没有执行数据类型,可以存储任意类型 val arr1 = Array("Jim", 12, 12.22, true) //指定泛型

2020-07-28 17:16:31 104

原创 scala-WordCount 简单项目练习

package com.doit.scala.day02import scala.collection.immutableobject WordCount { def main(args: Array[String]): Unit = { val lines: immutable.Seq[String] = List("spark hadoop flink spark", "hadoop flink spark hadoop", "spark hadoop flink spark") .

2020-07-27 17:59:30 147

原创 scala基础语法(二)

九.数组操作 val arr = Array(Array(1, 2, 5, 4), Array(3, 6, 7, 8), Array(9, 10)) //flatten只能一次压一层 val flatten = arr.flatten println(flatten.toBuffer) val lines = Array("spark hadoop flink spark", "spark spark flink", "spark flink") val lin

2020-07-27 11:06:16 109

原创 scala基础语法

一.声明变量object VaDemo { def main(args: Array[String]): Unit = { val a = 1 println(a) val b = "hello" println(b) val str:String = "world" println(str) }}二.常用类型Scala和Java一样,有7种数值类型Byte、Char、Short、Int、Long、Float和Double(无包装类型

2020-07-26 18:06:22 185 1

原创 Hive的DDL语言(一)

显示系统所有数据库show databases;+----------------+| database_name |+----------------+| db_doit || default || uu |+----------------+3 rows selected (0.108 seconds)模糊显示数据库hive> show databases like "db*";OKdb_doitT...

2020-07-20 22:10:56 115

原创 Hive入门

1.什么是hive? 要明确的一点是,Hive并不是数据库,而是用于解决海量结构化日志的数据统计(海量的结构化数据的运算分析)的工具。 1)Hive处理的数据存储在HDFS2)Hive分析数据底层的实现是MapReduce / spark(分布式运算框架)3)执行程序运行在Yarn上2.Hive的优缺点 1)优点操作接口采用类SQL语法,提供快速开发的能力(简单、容易上手)。 避免了去写MapReduce,减少开发人员的学习成本。 Hive的执行延迟比较...

2020-07-20 21:25:57 119

原创 Hbase之region的拆分

1.自动拆分 1)大小拆分当文件达到256M的时候会自动拆分1^3*2*128M 256M2^3*2*128M 2G3^3*2*128M 6.75G10G 10G(默认是10g) 2)前缀拆分

2020-07-19 21:03:03 175

原创 Hbase写数据流程

写数据流程 客户端发出命令 put "a","rk1001" 将命令传给zookeeper,找到对应的region.在往region里面写数据的同时还会往日志(WALS)里面写,日志在hbase和数据对应的存储空间上,日志再传到hdfs的/hbase/WALS. 在写数据的时候,随着数据写入的增加,hbase会刷新(flush)一下,每次刷新会出现一个storefile,这是一个逻辑的位置,并不真实存在,对应的是hdfs中的hfile flush将内存数据到...

2020-07-19 20:23:53 361

原创 Hbase读数据流程

一、读数据流程1.在客户端输入一个指令 get "a" ,"rk0010" 请求到 zookeeper的/hbase/META(META标位置)2.返回记录表数据位置的meta表的机器,交给客户端3.客户端请求regionserver2(加入meta返回数据告诉数据在region中储存) 下载meta表(我也有点不太清楚,可能是meta表在regionserver中也存在一份?)4.将meta表返回给客户端5.缓存 (345步待考证)6.从meta表中得到对应的regio...

2020-07-19 17:02:40 245

原创 hbase之shell命令java实现(三)--------过滤器(Filter)的操作

在Hbase中,在scan表示想要过滤掉一部分数据,可以选择使用Filter的方法来过滤掉一些数据 Filter包括这几种:(1) RowFilter;(2)QualifierFilter;(3)ValueFilter等 Table tb_user = HbaseUtils.getTable("tb_user"); Scan scan = new Scan(); RowFilter filter = new RowFilter(CompareOpera...

2020-07-19 11:23:01 246

原创 hbase之shell命令java实现(二)--------表的操作

1.建表 表名 列族 * 1)单列族 * 2)多列族 * 3)预分region表 * 4)在DOIT名称空间下建表 DOIT:tb_stu2 禁用表 是否禁用 启用 是否启用3 表是否存在4 删除表5 修改表结构 列族 * 5.1 modifyColumnFamily只能修改已经存在的列族 * 5.2 admin.modifyTable(tableDescriptor); 参数是一个tableDescriptor描述对象 添加列族 删除列族 覆盖列族1.建立表格.

2020-07-17 22:27:07 432

原创 hbase之shell命令java实现(一)--------namespace的增删改查

获取Admin 想操作一下就得先获取admin对象 调取封装好的工具类中方法注意admin最后一定要close()package com.doit.oneMore.client;import com.doit.oneMore.tools.HbaseTools;import org.apache.hadoop.hbase.NamespaceDescriptor;import org.apache.hadoop.hbase.client.Admin;import java....

2020-07-17 21:41:31 234

原创 Hbase的工具类

以下为hbase在java客户端中会用到的工具类:package com.doit.oneMore.tools;import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.hbase.Cell;import org.apache.hadoop.hbase.CellUtil;import org.apache.hadoop.hbase.HBaseConfiguration;import org.apache.had

2020-07-17 20:50:56 328

原创 Hadoop用法记录(一)

1.创建文件夹在hadoop中创建文件夹import org.apache.hadoop.conf.Configuration;import org.apache.hadoop.fs.FileSystem;import org.apache.hadoop.fs.Path;import java.net.URI;import java.net.URISyntaxException;public class ClientDemo1 { public static void main(S

2020-07-08 14:22:26 659

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除