自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Hive 开窗必需掌握的rank&dense_rank&row_number

函数说明注意:必须和over() 一起使用rank() 排序相同时会重复,总数不会变dense_rank() 排序相同时会重复,总数会减少row_number() 会根据顺序计算例如:rank dense_rank row_number80 1 1 180 1 1 278 3 2 376 4 3 4练习:namesubjectscore孙悟空语文87孙悟空数学95

2021-01-31 19:36:24 202

原创 Hive SQL开窗函数详解

Hive 开窗函数group by 是分组函数,一组出来一个数据over() 开窗,针对每一条数据,都有一个独立的组mk 3jk 3mk 3select orderdate,cost,sum(cost) over(order by orderdate)over里面的函数 是对窗口大小的限制注意:针对每一条数据,开一个独立的窗口10 10 (通过order by 没有比它小的所以返回) 1015 这里有比15小的,所以窗口大小+1 25需求:查询顾客的购买明细,及

2021-01-31 19:05:21 929

原创 启动&关闭Hadoop&Spark历史服务

/usr/local/src/hadoop-2.6.5/etc/hadoop目录下启动hadoop历史服务mr-jobhistory-daemon.sh start historyserver关闭hadoop历史服务mr-jobhistory-daemon.sh stop historyserver/usr/local/src/spark-2.4.4-bin-hadoop2.6目录下启动Spark历史服务./sbin/start-history-server.sh关闭Spark历史服务

2021-01-26 19:44:28 971

原创 anaconda3环境整体打包放在Spark集群上运行

一、将虚拟Python环境打包创建好环境后,进入到环境所在的文件夹,例如环境是/home/hadoop/anaconda3/envs, cd到envs下,使用打包命令将当前目录下的文件打成zip包:cd /home/hadoop/anaconda3/envszip -r py37.zip py37YARN集群配置Python环境在开始安装YARN及Spark集群的时候,可以将对应Python软件包、依赖模块,在YARN集群中的每个节点上进行安装。这样,YARN集群的每个NodeManager上都

2021-01-26 14:17:46 1838

原创 linux利用anaconda配置python虚拟环境

1.需要安装Anaconda时,要确定安装版本,推荐安装高版本,因为能切换到低版本wget https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/Anaconda3-5.0.0-Linux-x86_64.sh2.安装Anacondabash Anaconda3-5.0.0-Linux-x86_64.sh敲回车,敲上几个之后,我们能看到输入yes or no ,输入完yes 后,开始安装所有python的第三方类库安装完成之后,我们能看到如

2021-01-26 13:52:27 482

原创 全量&增量数据同步方法(Hive date_add & date_sub)

全量数据与增量数据同步1、不关心主键:a、第一次直接全量同步:insert overwrite table target select * from sourceb、第二次以后采用增量同步:表一般都有createtime, updatetime如:insert into table targetselect * from source where to_date(updatetime) >= date_add(CURRENT_DATE,-1) /(方式二)date_sub(to_da

2021-01-25 13:32:26 3552

原创 归并排序(Python实现)

归并排序(Python实现)1.归并排序算法思想2.流程图展示3. 复杂度分析4.python实现归并排序1.归并排序算法思想归并排序,是创建在归并操作上的一种有效的排序算法。算法是采用分治法(Divide and Conquer)的一个非常典型的应用,且各层分治递归可以同时进行。归并排序思路简单,速度仅次于快速排序,为稳定排序算法,一般用于对总体无序,但是各子项相对有序的数列。归并排序是用分治思想,分治模式在每一层递归上有三个步骤:分解(Divide):将n个元素分成个含n/2个元素的子序列。解

2021-01-20 20:42:23 661

原创 Hive对比传统数据库区别

Hive对比传统数据库①Hive和关系数据库存储文件系统不同,Hive使用的是hadoop的HDFS(hadoop的分布式文件系统),关系数据库则是服务器本地的文件系统;②Hive使用的计算模型是MapReduce,而关系数据库则是自己设计的计算模型③关系数据库都是为了实时查询的业务进行设计的,而Hive则是为了海量数据做数据挖掘设计的,实时性很差。④Hive很容易扩展自己的存储能力和计算能力,这个是继承hadoop的,而关系数据库在这个方面要比Hive差很多。...

2021-01-20 11:33:54 929

原创 hive常见的建表方式有哪些?各自的使用场景是?

hive常见的建表方式有哪些?各自的使用场景是?hive常见的建表方式与应用场景hive常见的建表方式与应用场景1、直接建表法create table tableName(字段名称 字段类型 [comment '中文注释说明'],字段名称 字段类型, ....)row format delimited fields terminated by 'char分割符即列分割符'lines terminated by '行分割符';注意:如果是外部表加:external应用场景:直接进行 字段类型

2021-01-17 23:15:01 479

原创 hive体系架构以及各个组件的作用

1、体系架构:2、三大组件:1、用户接口(Client):包括CLI、JDBC/ODBC、WebGUI①CLI(command line interface)为shell命令行 ,进行交互执行SQL;直接与Driver进行交互。CLI启动的时候,会同时启动一个Hive副本②JDBC/ODBC 驱动是Hive 的JAVA实现,作为JAVA的API;JDBC是通过Thift Server来接入,然后发送给Driver③WebGUI是通过浏览器访问Hive④HiveServer2基于Thift,允

2021-01-17 22:52:22 7196 2

原创 hive元数据为什么使用Mysql?不使用默认的Derby

hive元数据为什么使用Mysql?不使用默认的Derby?在安装完成Hive之后默认是以Derby数据库作为元数据库,存储Hive有哪些数据库,以及每个数据库中有哪些表,但是在实际生产过程中,并不是以derby作为Hive的元数据库,都是以Mysql去替换derby不选择Derby数据库来存储元数据的原因:1.Derby数据库,只能允许一个会话连接,只适合简单的测试。不支持并发,也就是只支持单线程操作,当一个用户在Hive进行操作是,其他用户则无法操作,导致整体效率性能较低。2. Derby还有一

2021-01-17 21:50:39 1381

原创 Hive常见的存储格式的区别与应用场景

一、文件存储格式在HIVE中,常见的文件存储格式有TextFileParquetORCSequencefileRCAVRO注意:TextFile、Sequencefile 基于行存储,ORC、Patquet基于列存储行存储和列存储上图中左边为行存储,右边为列存储行存储的特点:查询满足条件的一整行数据时,列式存储则需要去每个聚集的字段找到对应的每列的值,行存储只需要找到其中一个值,其余的值都在相邻地方,所以此时行存储查询数据更快。列式存储的特点:查询满足条件的一整列数据的时候,行存储

2021-01-17 21:22:13 2846 1

原创 Spark解决的问题与体系结构

Spark解决的问题与体系结构1、Spark解决的问题:2.Spark的API3.完整作业描述4.spark 体系架构1、Spark解决的问题:– 最大化利用内存cache (采用该多线程的方式)– 中间结果放内存,加速迭代(内存计算下Spark比MapReduce约快100倍)– 某结果集放内存,加速后续查询和处理,解决运行慢的问题– 更丰富的API(解决API单一问题)– Transfomation变换的api,比如map可对每一行做变换,filter过滤出符合条件的行等,这些API实

2021-01-16 09:50:21 574

原创 Spark的RDD概要&DAG概述

Spark的RDD概要&DAG概述1.RDD: 弹性分布式数据集(相当于集合)2.RDD对应HDFS关系图3.DAG概要1.RDD: 弹性分布式数据集(相当于集合)弹性:RDD的数据默认是存放在内存中,但是内存资源存在不足的情况,spark会将RDD数据写入磁盘(内存和磁盘切换)容错:如果任务执行失败,可以自动从失败节点进行恢复,由于某个节点宕机了导致数据丢失,RDD会根据自己的数据来源重新计算一遍,计算失败的partition的数据基于血缘关系:代表具体的任务的来龙去脉,映射hive 表是

2021-01-16 09:45:16 1415

原创 Spark核心RDD详述

Spark核心RDDSpark的核心:RDD特性:RDD的关键特征:RDD创建方式温馨提示:工作中已经很少使用RDD,一般直接使用dfSpark的核心:Spark任务来说,最终的目标是Action(save、collect…)①Spark的核心是建立在统一的抽象弹性分布式数据集(Resiliennt Distributed Datasets ,RDD)之上的,这使得Spark的各个组件可以无缝地进行集成,能够在同一个应用程序中完成大数据处理②RDD(Resilient Distributed Da

2021-01-16 09:36:32 227

原创 Spark编写UDF函数案例

Spark编写UDF函数案例一、前述二、UDF函数需求:将orders表中 order_dow和order_number进行求和一、前述SparkSql中自定义函数包括UDF和UDAFUDF:一进一出 UDAF:多进一出 (联想Sum函数)二、UDF函数UDF:用户自定义函数,user defined function* 根据UDF函数参数的个数来决定是实现哪一个UDF UDF1,UDF2。。。。UDF1xxx* UDF1 传一个参数 UDF2传两个参数。。。。。orders表+-

2021-01-16 09:02:49 942

原创 SparkContext详述

SparkContext:官方解释:SparkContext是spark功能的主要入口。其代表与spark集群的连接,能够用来在集群上创建RDD、累加器、广播变量。每个JVM里只能存在一个处于激活状态的SparkContext,在创建新的SparkContext之前必须调用stop()来关闭之前的SparkContext。sparkContext在Spark应用程序的执行过程中起着主导作用,它负责与程序和spark集群进行交互,包括申请集群资源、创建RDD、accumulators及广播变量等。spar

2021-01-15 23:29:16 3304

原创 Spark Conf配置用法

Spark 2.0.0在Spark2.0之后,Spark Session也是Spark 的一个入口, 为了引入dataframe和dataset的API,同时保留了原来SparkContext的functionality,如果想要使用 HIVE,SQL,Streaming的API, 就需要Spark Session作为入口。SparkSession spark = SparkSession.builder().appName("demo_spark").enableHiveSupport().ge

2021-01-15 23:26:53 2906

原创 Spark RDD的运行机制 &工作节点分布关系

1.分区及分区与工作结点(Worker Node)的分布关系• 通俗点来讲,可以将 RDD 理解为一个分布式对象集合,本质上是一个只读的分区记录集合。每个 RDD可以分成多个分区,每个分区就是一个数据集片段。一个 RDD 的不同分区可以保存到集群中的不同结点上,从而可以在集群中的不同结点上进行并行计2.RDD 执行过程:RDD 的典型的执行过程如下:读入外部的数据源(或者内存中的集合)进行 RDD 创建;RDD 经过一系列的 “转换” 操作,每一次都会产生不同的 RDD,供给下一个转换使用;最后一

2021-01-14 23:45:13 541

原创 spark之kryo序列化及其使用

spark之kryo序列化spark之kryo 序列化Spark 中使用 Kryo序列化中文切词案例:spark之kryo 序列化1.定义:把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。通俗地说序列化就是把内存(jvm)中一个对象的状态通过网络传输,或者保存到磁盘上,反序列化与之相反。2.spark中的序列化那么对象以何种形式进行传输性能更好呢?在spark2.0+版本的官方文档中提到:spark默认提供了两个序列化库:Java自身的序列化和Kry

2021-01-14 23:35:17 1548

原创 Spark&MapReduce的区别、多线程&多进程的区别

Spark&MapReduce的区别、多线程&多进程的区别1.spark与hadoop区别:2.Spark多线程运行, MR多进程运行3.MR存在的问题:4.线程和进程的区别:1.spark与hadoop区别:本质:主要看是否进行磁盘的转换hadoop:因为需要partition所以需要进行磁盘的转换存储spark:则不需要这个2.Spark多线程运行, MR多进程运行多线程:因此spark作业适合于低延迟类型的作业多进程:方便控制资源,进程是一个独享的空间,但是启动比较费时间

2021-01-14 23:30:21 680

原创 Spark DataFrame&RDD案例实现

Spark DataFrame&RDD案例实现1.DataFram类型2.需求:将orders表中days_since_prior_order中的空置(" ")转换成0idea中快捷键2.每个用户平均购买订单的间隔周期3.每个用户的总订单数量(分组)4.每个用户购买的product商品去重后的集合数据4.每个用户总商品数量以及去重后的商品数量(distinct count)需求:合并“去重后集合的数据”和“去重后的商品数量” 统计逻辑5.每个用户购买的平均每个订单的商品数量(hive已经实现过了)

2021-01-14 23:25:33 584

原创 Spark实现WordCount案例

RDD操作实现1.文本文件:方式一:没用正则处理的方式二:添加正则表达式方式三:利用sortBy()进行排序Spark sql实现导入隐式转换createOrReplaceTempView使用1.文本文件:Preface“The Forsyte Saga” was the title originally destined for that part of it which is called “The Man of Property”; and to adopt it for the collec

2021-01-14 22:54:05 463

原创 Spark RDD 宽依赖&窄依赖

Spark RDD 宽依赖&窄依赖1.窄依赖2.宽依赖:3.阶段的划分4.宽依赖和窄依赖的作用:1.窄依赖每一个父RDD的Partition最多被子RDD的一个Partition使用 (一对一的关系)常见算子:map flatmap filter union sample 等等2.宽依赖:指的是多个子RDD的Partition会依赖同一个父RDD的Partition (一对多的关系)常见算子:groupByKey reduceByKey sortByKey join 等等对于窄依赖的

2021-01-14 22:21:56 1208

原创 Spark的三种运行模式

Spark三种运行模式1.Spark运行模式:2.验证Spark三种模式代码1.Spark运行模式:①Local(也称单节点模式):常用于开发和学习./spark-shell - -master local[n] ,n代表线程数②Standalone(集群模式)(应用较少)独立模式,类似MapReduce 1.0所采取的模式,完全由内部实现容错性和资源管理③Spark on Yarn(两种模式集群模式) :Yarn Client 与 Yarn Cluster3.1 Yarn Client:

2021-01-14 22:06:46 2584

原创 Spark 调优

Spark调优一、Spark资源参数调优二、开发调优**调优思路:**优先使用参数调优,如果参数调优不能满足我们的业务场景,这里就要涉及到代码调优一、Spark资源参数调优• num-executors:该作业总共需要多少executor进程执行– 建议:每个作业运行一般设置50~100个左右较合适• executor-memory:设置每个executor进程的内存, num-executors* num- executors代表作业申请的总内存量(尽量不要超过最大总内存的1/3~1/2)–

2021-01-14 21:59:55 163

原创 Spark在集群上执行代码案例(中文切词)

java的切词使用案例(Demo)@Testpublic void testDemo() { JiebaSegmenter segmenter = new JiebaSegmenter(); String[] sentences = new String[] {"这是一个伸手不见五指的黑夜。我叫孙悟空,我爱北京,我爱Python和C++。", "我不喜欢日本和服。", "雷猴回归人间。", "工信处女干事每月经过下属科室都要亲口

2021-01-14 21:46:02 860

原创 Spark session 深入理解

Spark sessionSpark session 深入理解创建SparkSessionBuilder 的方法如下:设置参数读取元数据读取数据使用SparkSQL存储/读取Hive表下图是 SparkSession 的类和方法Spark session 深入理解在Spark1.6中我们使用的叫Hive on spark,主要是依赖hive生成spark程序,有两个核心组件SQLcontext和HiveContext。这是Spark 1.x 版本的语法//set up the spark confi

2021-01-14 21:37:50 3013

原创 Spark中DataFrame 基本操作函数

DataFrame的基本操作函数Action 操作1、 collect()返回值是一个数组,返回dataframe集合所有的行2、 collectAsList()返回值是一个java类型的数组,返回dataframe集合所有的行3、 count()返回一个number类型的,返回dataframe集合的行数4、 describe(cols: String*)返回一个通过数学计算的类表值(count, mean, stddev, min, andmax),这个可以传多个参数,

2021-01-13 10:38:16 1438

原创 Hive创建表

CREATE TABLE 创建一个指定名字的表。如果相同名字的表已经存在,则抛出异常;用户可以用 IF NOT EXIST 选项来忽略这个异常EXTERNAL 关键字可以让用户创建一个外部表,在建表的同时指定一个指向实际数据的路径(LOCATION)LIKE 允许用户复制现有的表结构,但是不复制数据COMMENT可以为表与字段增加描述ROW FORMAT 设置行数据分割格式DELIMITED [FIELDS TERMINATED BY char] [COLLECTION ITEMS TERMIN

2021-01-13 02:06:26 2116

原创 Hive SQL vs SQL 区别

1、数据更新:HQL:不建议,因为Hive定位是数据仓库 ,主要应用是数据的分析,不是查询SQL:支持,增删改查为什么说hive是离线的,因为他的延迟高2、UDF,UDAF,UDTFUDF:就是一个一对一关系,一进一出。如:①字段的格式处理②直接用于select语句,常见于大小写转换 。③Hive自带的udf:如lower()UDAF:多对一情况,常见于wordcount,group by 阶段UDTF:一对多3、读时模式和写时模式json:{key:value,key1:val.

2021-01-13 01:59:24 3868

原创 Hive的三种建表方式

Hive的三种建表方式1.直接建表法:2.抽取(as) 建表:3.like建表1.直接建表法:create table movies (uid string,iid string,score string , ts string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n'场景:直接进行 字段类型 ,字段备注,数据存储格式自定义2.抽取(as) 建表:create table article

2021-01-13 01:53:50 774

原创 Hive 内部表&外部表

Hive的表结构本质就是Hadoop的目录/文件– hive默认表存放路径一般都是在你工作目录的hive目录里面,按表名做文件夹分开,如果你有分区表的话,分区值是子文件夹,可以直接在其它的MR job里直接应用这部分数据1、查看Hive中表结构:方式一:show create table 表名;show create table orders;方式二:desc 表名;desc orders;2、删除HIve中表drop table 表名;drop table orders;

2021-01-13 01:52:07 1326

原创 判断数据是增量分区&全量分区

如何判断数据是增量分区,还是全量分区(保存数据T-1的全量,通常保存进一个月的数据为T-1的全量)增量形式:不包含历史所有的数据,只是当天的数据 where dt between ‘T-7’ and ‘T-1’2020-12-19 1000000 (当天数据)2020-12-18 12000002020-12-17 1009000全量形式: where dt=‘T-1’ 多表关联2020-12-19 1000000 (当天+历史所有数据)2020-12-18 99000002020-12-

2021-01-13 01:48:23 3187

原创 Hive的collect_list&collect_set函数

collect_list与collect_setselect collect_list(‘1’,‘2’,‘3’) ->[“1,2,3”] 返回是一个list它们都是将分组中的某列转为一个数组返回,不同的是collect_list不去重而collect_set去重。create tablet_visit_video (username string,video_name string) partitioned by(day string)row format delimited fi

2021-01-13 01:46:47 25707 3

原创 Hive分区&分桶

Hive分区&分桶一、Hive分区分区常见操作:2、Hive 静态分区3、动态分区分区细节:二、Hive 分桶Hive 分桶应用场景一、Hive分区粗粒度的划分业界常用日作为分区分区作用:减少查询的数据量、提高查询效率通过partition by 进行定义举例:create table `udata_partition`(`user_id` string,`item_id` string,`rating` int)partitioned by(`dt` string)row

2021-01-13 01:42:28 301

原创 快速确定HIve表中数据是否重复

经验:如何快速知道订单号是否重复?(因为Hive中没有主键,mysql严格要求主键)可以将订单号作为主键方式一: cnt 没有去重,order_cnt 去重, 如果得到结果相同,则表是没有重复selectcount(*) cnt ,count(distinct order_id) order_cntfrom orders//结果:cnt order_cnt3421083 3421083 方式二:根据订单号进行分组,订单号不能有大于1的情况,就代表没有重复select order_id,

2021-01-13 01:28:28 4447

原创 Hive优化

Hive 优化1、数据调研:定义枚举值查询是否为 0-6方式一:select distinct order_dowfrom orders方式二:select order_dowfrom ordersgroup by order_dow注意:在工作中针对数据去重,能使用group by 就不使用distinct使用group by 多个reduce进行处理distinct 所有数据在一个reduce中进行处理测试一下参数代码://group by 需要reduce操作,所以用一

2021-01-13 01:26:27 220

原创 Hive的例题

数据处理的方法论:了解产品/运行的需求(需求解决什么问题?定义指标和口径(产品和需求方)) ->数据收集(数据准备,数据调研!! 数据获取方式有:①接口调取QMQ kafka,进行消息队列获取②爬虫③从文件④关系型业务数据库⑤数据仓库ETL,注意倾向于从数据仓库中获取数据)-> 数据处理(数据清洗 ETL(数据的提取、转换、加载),观察缺失值(NULL 或 空字符),重复值(订单量重复统计->去重),异常值(二分类变量中0,1出现其他类型,与产品方进行确认后剔除,合并多个数据集,数据类

2021-01-12 09:59:37 511

原创 pyspark编写UDF函数

pyspark 编写 UDF函数pyspark udf1、先定义一个函数,例如:def get_time(ts): try: res = datetime.fromtimestamp(int(ts)).strftime('%Y-%m-%d') return res except: return '' else: return ''2、udf的注册,这里需要定义其返回值类型,可从pyspark.sql.types

2021-01-08 18:50:31 3532

空空如也

空空如也

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

TA关注的人

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