自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(61)
  • 资源 (1)
  • 收藏
  • 关注

原创 scala中的柯里化

定义:柯里化(Currying)指的是将原来接受两个参数的函数变成新的接受一个参数的函数的过程。新的函数返回一个以原有第二个参数为参数的函数。实例://实现简单的两个数字想加def add(x:Int,y:Int):Int=x+y将上述的函数进行变形:def add(x:Int)(y:Int)=x+y调用过程为:add(1)(2),这里实际是一次调用两个普通的函数,第一次调用使用x...

2020-02-07 15:40:45 295

原创 Idea中使用maven打包出现Cleaning up unclosed ZipFile for archive?

原因:因为因为maven打包的时候内存不够导致解决办法:一:右击package->选中下面截图所示选项二:添加参数(-Xms1024m -Xmx1024m) 点击applay三:此时会多处这个Run Configurations四:打包选择使用Run Configuraions中自己配置进行打包...

2019-07-12 16:30:30 9198

原创 idea运行spark程序启动报错

错误信息如下:java.lang.IllegalArgumentException: System memory 259522560 must be at least 471859200. Please increase heap size using the --driver-memory option or spark.driver.memory in Spark configurati...

2019-07-03 15:58:09 561

原创 Hive动态分区

场景一(动态分区和静态分区结合):如果一个分区表A(日表)中有两个分区字段:prov_id(省分区),day_id(日分区),一个分区表B(月表)中有两个分区字段prov_id(省分区),month_id(月分区)。需要将A表中的20190101~20190131月份的所有数据插入到表B的201901月份中,这里就需要使用动态分区结合静态分区的方式插入数据。注意:官方文档说:静态分区键必须出现在动...

2019-06-18 16:22:59 341

原创 shell获取指定月份的最后以后的周一日期

shell获取一个月最后以后的周一日期#!/bin/bash#####获取账期参数 例如:20190101DAY_ID=$1#####获取账期的月份 例如:201901MONTH_ID=${DAY_ID:0:6}#####获取账期所在月份的最后一天数据 例如:20190131LAST_DAY_ID=`date -d "$(date -d "${MONTH_ID}01 1 mon...

2019-06-18 15:08:59 2821

原创 case class在spark的executor端传输不需要序列化

只要在声明类时 在class关键字前加上case关键字 这个类就成为了样例类样例类和普通的区别在于:            (1)默认实现序列化接口            (2)默认自动覆盖 toString equals hashCode方法            (3)不需要new可以直接生成对象这个代码是不会报错,是可以正常执行的。...

2019-01-23 15:24:36 1066

原创 Redis持久化的两种方式

redis的持久化:因为redis中的数据是保存到内存中的,电脑重启或者机器故障会导致内存中的数据丢失,所以有必要对redis中的数据进行持久化操作。redis持久化分为两种:Rdb:快照形式,定期把内存中当前时刻的数据保存到磁盘。Redis默认支持的持久化方#dbfilename:持久化数据存储在本地的文件dbfilename dump.rdb#dir:持久化数据存储在本地的路径,...

2019-01-21 19:40:15 219

转载 kafka0.9.0 新特性(对比0.8)

如果配置了enable.auto.commit为true和auto.commit.interval.ms=xxx,那么就按照这个频率进行commit; 为false时,就需要手动进行commit,可以使用同步方式commitSync,也可以使用 commitAsync 进行异步commit,对于异步确认的话,会返回一个hook,可以利用这个hook进行一定的业务逻辑处理。

2019-01-21 19:17:46 2254

原创 scala实现K邻近算法

算法流程1.计算中的set中每一个点与Xt的距离。2.按距离增序排。3.选择距离最小的前k个点。4.确定前k个点所在的label的出现频率。5.返回频率最高的label作为测试的结果。import scala.collection.mutable.Mapobject kNN { def getGroup(): Array[Array[Double]] = { /...

2019-01-21 19:03:58 207

原创 使用spark将Map写入到es

1.pom文件如下: <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.1.1</artifactId> ...

2019-01-19 11:01:40 3217

原创 spark2.2.0中stage划分的源码解析

这里主要讲解的是stage的划分。stage的划分工作是在DAGScheduler中完成的,在DAGScheduler中会将一个job根据宽窄依赖划分为多个stage。下面会详细介绍stage的划分过程。1.首先你需要有一个spark2.X源码,因为你可以在源码的基础上进行注释,方便你后期的学习。双击shift->输入RDD​2.进入到RDD的源码,你会发现我们调用的spar...

2019-01-18 21:30:41 901 1

转载 k-means聚类原理和使用sparkmllib实现

聚类与分类的区别 分类:类别是已知的,通过对已知分类的数据进行训练和学习,找到这些不同类的特征,再对未分类的数据进行分类。属于监督学习。 聚类:事先不知道数据会分为几类,通过聚类分析将数据聚合成几个群体。聚类不需要对数据进行训练和学习。属于无监督学习。 关于监督学习和无监督学习,这里给一个简单的介绍:是否有监督,就看输入数据是否有标签,输入数据有标签,则为有监督学习,否则为...

2019-01-18 17:31:51 2923

原创 Hbase原理详解

下图是hbase的底层原理图。从图中可以看出hbase分为HMaster和HRegionServer两个部分。HMaster主要功能:监控 RegionServer 处理 RegionServer 故障转移 处理元数据的变更 处理region 的分配或移除 在空闲时间进行数据的负载均衡 通过 Zookeeper 发布自己的位置给客户端RegionServer主要功能:...

2019-01-18 15:31:55 334

原创 rowkey设计原则和方法

rowkey设计首先应当遵循三大原则:rowkey长度原则rowkey是一个二进制码流,可以为任意字符串,最大长度为64kb,实际应用中一般为10-100bytes,它以byte[]形式保存,一般设定成定长。一般越短越好,不要超过16个字节,注意原因如下:1、目前操作系统都是64位系统,内存8字节对齐,控制在16字节,8字节的整数倍利用了操作系统的最佳特性。2、hbase将部分数据加载到...

2019-01-18 11:52:39 3179

原创 spark2.x中使用累加器

spark1.X和2.X定义累加器的方式是不同的:累加器的作用:可以实现一个变量在不同的executor端能保持状态的累加。使用累加器的代码实现累加: def main(args: Array[String]): Unit = { val ssc = SparkSession.builder().appName("ac").master("local[*]").getOr...

2019-01-17 17:39:14 2210 1

原创 java中的equals和==的区别

java中的数据类型,可分为两类:1.基本数据类型,也称原始数据类型。byte,short,char,int,long,float,double,boolean他们之间的比较,应用双等号(==),比较的是他们的值。2.复合数据类型(类)当他们用(=)进行比较的时候,比较的是他们在内存中的存放地址,所以,除非是同一个new出来的对象,他们的比较后的结果为true,否则比较后结果为false。...

2019-01-16 21:21:24 121

转载 java中的乐观锁和悲观锁

悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。再比如Java里面的同步原语synchronized关键字的实现也是悲观锁。 乐观锁:顾名思义,就是很乐观,每次去拿数据的时候都认为别人不会修改,所以不会上锁...

2019-01-16 21:14:50 1970

原创 Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/Logging

在spark1.X以前,Logging使用的是org.apache.spark.Logging这个类,但是在spark2.X以后,这个类被改成了import org.apache.spark.internal.Logging。下图的spark版本是2.x,可以看出对于org.apache.spark.Logging这个类,它已经不识别了,所以这里需要将spark的版本替换成2.X。...

2019-01-15 20:54:29 4587 2

转载 Idea左侧栏不显示目录结构

使用Idea有时候会遇到左侧栏的目录结构显示不出来的情况,这时候可以这样解决:1.删除该项目根目录下的.idea文件夹;2.重启Idea即可看到目录结构

2019-01-13 23:28:25 4345

原创 kafka的Direct方式详解

1)Direct的方式是会直接操作kafka底层的元数据信息,这样如果计算失败了,可以把数据重新读一下,重新处理。即数据一定会被处理。拉数据,是RDD在执行的时候直接去拉数据。2)由于直接操作的是kafka,kafka就相当于你底层的文件系统。这个时候能保证严格的事务一致性,即一定会被处理,而且只会被处理一次。而Receiver的方式则不能保证,因为Receiver和ZK中的数据可能不同步,Sp...

2019-01-12 09:23:41 1516

原创 hive中使用substr对字符串进行截取

在hive中可以使用substr对时间串进行截取:substr(‘20180101’,0,8),表示从第一位开始截取,截取的长度为8位结果: 20180101

2019-01-11 19:52:08 7727 2

原创 hive中的时间操作

1.获取系统当前时间戳select unix_timestamp();2.将时间戳转换成时间,并且按照指定的格式进行格式化select from_unixtime(timestamp long,format string)3.将日期转换成时间戳select unix_timestamp(date string)4.日期时间转日期函数: to_date语法: to_date(s...

2019-01-11 19:41:26 962

原创 hive的sql中datediff()、date_sub()、date_add()函数

1.日期比较函数: datediff语法: datediff(string enddate,string startdate)返回值: int说明: 返回结束日期减去开始日期的天数。例如:hive>select datediff('2018-12-22','2018-12-12')结果为:12.日期增加函数: date_add语法: date_add(string startd...

2019-01-11 19:21:45 15274

原创 mysql Error Code : 1060 Duplicate column name 'user_id'

hql语句是这样的:create table qfbap_dm.dm_user_basic as select * from qfbap_dwd.dwd_user a join qfbap_dwd.dwd_user_extend b on a.user_id=b.user_id;遇到了一个异常:mysql Error Code : 1060 Duplicate column name 'I...

2019-01-10 13:27:11 3762 1

原创 hive设置本地模式

hive> set hive.exec.mode.local.auto=true;(默认为false)

2019-01-09 22:58:41 1468

原创 hive强制删除数据库

当hive数据库中有数据的时候,使用drop database tmp 是无法删除的,删除的时候会报错误,当数据库中有表的时候 可以使用drop database tmp cascade删除数据库。...

2019-01-08 11:58:49 3047

原创 什么是RDD

RDD(Resilient Distributed Dataset)叫做分布式数据集,是Spark中最基本的数据抽象,它代表一个不可变、可分区、里面的元素可并行计算的集合。RDD具有数据流模型的特点:自动容错、位置感知性调度和可伸缩性。RDD允许用户在执行多个查询时显式地将工作集缓存在内存中,后续的查询能够重用工作集,这极大地提升了查询速度。下面是RDD属性的介绍:- A list of pa...

2019-01-07 10:43:07 293

原创 Azkaban安装和使用详解

1、准备工作Azkaban Web服务器azkaban-web-server-2.5.0.tar.gzAzkaban执行服务器azkaban-executor-server-2.5.0.tar.gzMySQL目前azkaban只支持 mysql,需安装mysql服务器,本文档中默认已安装好mysql服务器,并建立了 root用户,密码 root.azkaban下载地址:http://...

2019-01-06 16:16:09 177

原创 Spark自定义类在Driver和Executor端传输问题

方式一:自定义一个类,并且这个类需要实现Serializable接口1.首先写一个class自定义类class Rules extends Serializable { val rulesMap = Map("hadoop" -> 2.7, "spark" -> 2.2) //val hostname = InetAddress.getLocalHost.getHost...

2019-01-06 15:55:54 1436

原创 SparkStreaming实现HA高可用

一:RDD高可用spark streaming,从原理上来说,是通过receiver来进行数据接收的;接收到的数据,会被划分成一个一个的block;block会被组合成一个batch;针对一个batch,会创建一个rdd;启动一个job来执行我们定义的算子操作。receiver主要接收到数据,那么就会立即将数据写入一份到容错文件系统(比如hdfs)上的checkpoint目录中的,一份磁盘文件中...

2019-01-06 15:32:51 800

转载 Spark-Streaming之window滑动窗口应用

Spark-Streaming之window滑动窗口应用,Spark Streaming提供了滑动窗口操作的支持,从而让我们可以对一个滑动窗口内的数据执行计算操作。每次掉落在窗口内的RDD的数据,会被聚合起来执行计算操作,然后生成的RDD,会作为window DStream的一个RDD。网官图中所示,就是对每三秒钟的数据执行一次滑动窗口计算,这3秒内的3个RDD会被聚合起来进行处理,然后过了两秒...

2019-01-06 13:49:37 274

原创 对DStream.foreachRDD的理解

官方文档解释:将函数func应用于从流生成的每个RDD的最通用的输出运算符。此函数应该将每个RDD中的数据推送到外部系统,例如将RDD保存到文件中,或者通过网络将其写入数据库。请注意,函数func是在运行流应用程序的驱动程序进程中执行的,并且通常在函数func中包含RDD操作,这将强制计算流RDD。对于这个定义会产生一个疑问:在一个batch interval里面会产生几个RDD?结论:有且...

2019-01-05 23:28:29 695

原创 MapReduce常见的join方法介绍

假设要进行join的数据分别来自File1和File2.2.1 reduce side joinreduce side join是一种最简单的join方式,其主要思想如下:在map阶段,map函数同时读取两个文件File1和File2,为了区分两种来源的key/value数据对,对每条数据打一个标签(tag),比如:tag=0表示来自文件File1,tag=2表示来自文件File2。即:ma...

2019-01-03 09:00:26 172

转载 kafka保证生产者和消费者数据不丢失解决方案

Producer根据指定的partition方法(默认round-robin(轮询)、hash等),将消息发布到指定topic的partition里面;kafka集群接收到Producer发过来的消息后,将其持久化到硬盘,并保留消息指定时长(可配置),而不关注消息是否被消费;Consumer从kafka集群pull数据,并控制获取消息的offset。producer 的deliver guara...

2018-12-28 22:49:42 5477 1

转载 map和flatMap之间的区别

scala> rdd5.flatMap(t=>{t.split("\t")}).collectres8: Array[String] = Array(75, 2018-09-17 19:15:34.0, BK-HTML5-JY-1819, BK181713017, 张帅杰, 2018-09-17 19:50:37.0, 34, 0, 55, 55, 75, 2018-09-17 19...

2018-12-28 09:19:12 3970

原创 Hive Schema version 2.1.0 does not match metastore's schema version 1.2.0 Metastore is not upgraded

hive启动报错,这里很显然可以看出错误是说2.1.0版本的hive不能匹配hive1.2.0的metastore,所以需要将hive的元数据信息的版本更改一下 Caused by: MetaException(message:Hive Schema version 2.1.0 does not match metastore's schema version 1.2.0 Metastore...

2018-12-26 19:42:19 859

原创 关闭hbase的Hlog从而提高写入速度

跳过写入Hlog,提高写入速度 Put put = new Put(Bytes.toBytes(k2.toString())); put.setDurability(Durability.SKIP_WAL);

2018-12-25 20:33:52 844

原创 mysql中的数据导入到hbase中,并关联phoenix

1.在hbase上创建表:hbase>create 'ES','f1'2.phoenix上创建表: jdbc:phoenix:es01> create table ES(ids varchar primary key ,"f1"."class_name" varchar,"f1"."exam_id" varchar,"f1"."examinee_name&quot

2018-12-25 16:07:17 710

原创 锁定文件失败 打不开磁盘“D:\vms\S1\CentOS 64 位.vmdk”或它所依赖的某个快照磁盘

电脑强制关机后,centos系统启动失败,报异常:锁定文件失败 打不开磁盘“D:\vms\S1\CentOS 64 位.vmdk”或它所依赖的某个快照磁盘。解决办法:进入D:\vms\S1目录,删除下图的两个文件夹:...

2018-12-24 10:28:08 9513 1

原创 map集合的遍历

在遍历map集合的时候,可以使用for循环来对map进行遍历for(Map.Entry<String,String> entry:hashMap.entrySet()){ String key = entry.getkey(); // 获取一个key String value = entry.getvalue(); // 获取一个value值}...

2018-12-21 15:22:08 72

win7下编译过的hadoop2.7.2

hadoop2.7.2在win7下编译过的bin目录,亲测,100%管用

2018-09-14

空空如也

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

TA关注的人

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