20210815最终

一、数据倾斜专题

1.数据倾斜的表现

任务进度长时间维持在99%(或100%),查看任务监控页面,发现只有少量(1个或几个)reduce子任务未完成。因为其处理的数据量和其他reduce差异过大。

2.数据倾斜的原因

1)、key分布不均匀、比如null值太多

2)、某些SQL语句本身就有数据倾斜

3)、关联字段类型不一致

3.数据倾斜的解决方案

3.1 参数调节

1)hive.map.aggr = true

Map 端部分聚合,相当于Combiner

2)hive.groupby.skewindata=true

数据倾斜的时候进行负载均衡,当项设定为 true,生成的查询计划会有两个 MR Job。第一个 MR Job 中,Map 的输出结果集合会随机分布到 Reduce 中,每个 Reduce 做部分聚合操作,并输出结果,这样处理的结果是相同的 Group By Key 有可能被分发到不同的 Reduce 中,从而达到负载均衡的目的;第二个 MR Job 再根据预处理的数据结果按照 Group By Key 分布到 Reduce 中(这个过程可以保证相同的 Group By Key 被分布到同一个 Reduce 中),最后完成最终的聚合操作。

3.2 sql语句优化

1)大小表Join:

使用map join让小的维度表(1000条以下的记录条数) 先进内存。在map端完成reduce.

2)大表Join大表,但是0值或空值过多:

把空值的key变成一个字符串加上随机数,把倾斜的数据分到不同的reduce上,由于null值关联不上,处理后并不影响最终结果。比如按userid进行join的情况,userid会有空值

3)Join时关联条件的数据类型不同,如int型的id和string类型的id

把数字类型用cast转换成字符串类型

4)将count(distinct)换为两次group by

二、hive调优

开启并行(多个union all时可提升性能)

设置每个map或reduce能申请的内存

--倾斜处理

--合并小文件

--开启动态分区、分区数据进行合并

--开启mapjoin

1.Join中需要将大表写在靠右的位置

2.尽量使用UDF而不是transfrom

3.大表join小表时,使用map join让小的维度表(1000条以下的记录条数) 先进内存。在map端完成reduce.(hive2.0以后默认自动开启map join)

4.将count(distinct)换为两次group by

5.先查出子查询,然后从查询结果中继续查询,避免从全量数据中查询

6.尽量把子查询中的group by移到外层进行

7.先过滤后排序效率相对较高

8.不写select* 而要指明字段

9.将子查询落临时表也算优化

二十一、sparkstreaming调优

1.协调Kafka读取速率、每批次时间、数据处理所需时间,使得每个task 都能在批处理时间内及时处理完 Partition 内的数据

2.对一些经常使用到的rdd,可以调用rdd.cache()来缓存rdd

3.视情况调节用于缓存rdd的内存和用于shuffle的内存

三、CDH搭建过程:

安装操作系统,配置固定ip

永久关闭每台机器的防火墙\SELinux

为每台机器配置ssh免秘钥登录

安装jdk\MySql

配置NTP

Cloudera -Manager  Server  和Agent

通过CM安装CDH

四、有监督学习

有监督的学习,即存在目标变量,需要探索特征变量和目标变量之间的关系,在目标变量的监督下学习和优化算法。例如,信用评分模型就是典型的有监督学习,目标变量为“是否违约”。算法的目的在于研究特征变量(人口统计、资产属性等)和目标变量之间的关系。

1.分类算法

分类算法和预测算法的最大区别在于,前者的目标变量是分类离散型(例如,是否逾期、是否肿瘤细胞、是否垃圾邮件等),后者的目标变量是连续型。一般而言,具体的分类算法包括,分类决策树、KNN、朴素贝叶斯、svm等。

分类决策树

1.给定一个训练数据集(数据集中的数据包含划分属性和决策属性,即:“当满足哪些划分属性时,可以给出什么样的决策结果)

比如:我们想知道在什么天气条件下适合户外运动”

2.那么划分属性包含:天气、温度、适度、风力

决策属性包含:是否可以进行户外运动

3.可以根据分类纯度(熵)来指定分类规则,最终将数据分类成决策树的形式

KNN

1、给定一个训练集数据,每个训练集数据都是已经分好类的。

2、设定一个初始的测试数据a,计算a到训练集所有数据的欧几里得距离,并排序。                       

3、选出训练集中离a距离最近的K个训练集数据。

4、比较k个训练集数据,选出里面出现最多的分类类型,此分类类型即为最终测试数据a的分类。

2.回归算法

预测类算法,其目标变量一般是连续型变量。常见的算法,包括线性回归、逻辑回归、svm等。

线性回归

先给定一个训练集,根据这个训练集学习出一个线性函数

然后测试这个函数是否足够拟合训练集数据

然后挑选出最好的线性函数(代价函数越小,说明我们线性回归的越好,和训练数据拟合的越好)

五、无监督学习

无监督学习,即不存在目标变量,基于数据本身,去识别变量之间内在的模式和特征。例如关联分析,通过数据发现项目A和项目B之间的关联性。例如聚类分析,通过距离,将所有样本划分为几个稳定可区分的群体。这些都是在没有目标变量监督下的模式识别和分析。

1)聚类分析

聚类的目的就是实现对样本的细分,使得同组内的样本特征较为相似,不同组的样本特征差异较大。常见的聚类算法包括kmeans、密度聚类等。

kmeans

(1)、设定数字k,从n个初始数据中随机的设置k个点为聚类中心点。

(2)、针对n个点的每个数据点,遍历计算到k个聚类中心点的距离,最后按照离哪个中心点最近,就划分到那个类别中。

(3)、对每个已经划分好类别的n个点,对同个类别的点求均值,作为此类别新的中心点。

(4)、循环(2),(3)直到最终中心点收敛。

2)关联分析

关联分析的目的在于,找出项目(item)之间内在的联系。常常是指购物篮分析,即消费者常常会同时购买哪些产品(例如游泳裤、防晒霜),从而有助于商家的捆绑销售。如Apriori算法等

Apriori

首先设定最小支持度与最小可信度两个门槛值,满足以上两个条件的前提下,根据这些组合最终推出我们的关联规则

支持度:比如在1000次的商品交易中同时出现了啤酒和尿布的次数是50次,那么此关联的支持度为5%

可信度:在数据集中已经出现A时,B发生的概率

六、hive命令专题:

1.创建内部hive表,然后导入数据

CREATE TABLE t_hive (a int, b int, c int) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';

补充:通过stored as parquet可以将数据保存为parquet格式

从本地导入数据到hive表

LOAD DATA LOCAL INPATH '/home/cos/demo/t_hive.txt' OVERWRITE INTO TABLE t_hive ;

从Hive表导出数据到本地文件系统

INSERT OVERWRITE LOCAL DIRECTORY '/tmp/t_hive' SELECT * FROM t_hive;

从HDFS导入数据到hive表

LOAD DATA INPATH '/user/admin/t_hive.txt' OVERWRITE INTO TABLE t_hive ;

从Hive表导出数据到HDFS

INSERT OVERWRITE DIRECTORY '/user/admin/t_hive' SELECT * FROM t_hive;

从其它hive表导入数据到hive表

INSERT OVERWRITE TABLE t_hive2 SELECT * FROM t_hive ;

**也可创建hive表的同时,从其它hive表导入数据:

CREATE TABLE t_hive AS SELECT * FROM t_hive2

2.创建外部hive表

create external table ext_student(id int ,name string) row format delimited fields terminated by '\t' location '/datax';

3.创建分区表

CREATE TABLE t_hft(

SecurityID STRING,

tradeTime STRING,

PreClosePx DOUBLE

) PARTITIONED BY (tradeDate INT)

ROW FORMAT DELIMITED FIELDS TERMINATED BY ',';

导入分区数据

load data local inpath '/home/BlueBreeze/data/t_hft_1.csv' overwrite into table t_hft partition(tradeDate=20130627);

查看分区表

SHOW PARTITIONS t_hft;

4.正则匹配表名

show tables '*t*';

5.增加一个字段

ALTER TABLE t_hive ADD COLUMNS (new_col String);

6.重命令表名

ALTER TABLE t_hive RENAME TO t_hadoop;

7.仅复制表结构不导数据

CREATE TABLE t_hive3 LIKE t_hive;

8.删表

drop table if exists t_hft;

增加分区:

ALTER TABLE book add  PARTITION (category = 'zazhi') location '/user/hive/warehouse/datax.db/book/category=zazhi';

删除分区:

ALTER TABLE table_name DROP partition_spec, partition_spec,...

重命名表:

ALTER TABLE table_name RENAME TO new_table_name

修改列名:

ALTER TABLE table_name CHANGE [COLUMN] col_old_name col_new_name column_type [COMMENT col_comment] [FIRST|AFTER column_name]

增加/替换列:

ALTER TABLE table_name ADD|REPLACE COLUMNS (col_name data_type [COMMENT col_comment], ...)

查看表名,部分匹配

SHOW TABLES 'page.*';

SHOW TABLES '.*view';

查看某表的所有Partition,如果没有就报错:

SHOW PARTITIONS page_view;

查看某表结构:

DESCRIBE invites;

查看分区内容

SELECT a.foo FROM invites a WHERE a.ds='2008-08-15';

七、杂项专题:

hive调用hql脚本

./hive  -d key value  -f HQL文件

客单价:

下单数:

过滤下单时间,对order_code进行去重统计

下单金额:

过滤下单时间,对cash_pay进行求和

支付订单数:

过滤支付时间、支付状态,对order_code进行去重统计

支付订单金额:

过滤支付时间、支付状态,对quantity*refund_amount求和

支付取消、退货退款:

除了过滤的时间不同,其余逻辑同上

7、按照需求使用spark编写一下程序?

  A、当前文件a.text的格式如下,请统计每个单词出现的个数和第四列每个元素出现的个数

A,b,c,d

B,b,f,e

A,a,c,f

sc.textFile(“a.text”).flatMap(_.split(“,”)).map((_,1)).ReduceByKey(_+_).foreach(println)

sc.textFile(“a.text”).map(line=>{(line.split(",")(3),1)}).reduceByKey(_+_).foreach(println)

guass系统表:

pg_tables

pg_stat

pg_locks

pg_patitions

pg_proc

pg_get_tabledef

字段即使有索引也不一定会走索引:

因为当数据量比较小时,全表扫描比索引扫描更快,因此会自动选择全表扫描

行转列:

1.用union all将各列数据拼接到一列多行

列转行:

1.用case when then 将各行数据提取到多列一行

八、项目专题

华为商城:

简述、分层、数据流、负责的技术和业务、技术栈

之前的数据流:

flink (_cs)/ roma (_rt )/ DAYU (guass中处理, SDI - DWRDIM -DWD-DWS-DM -页面sql)/API服务

现在的数据流:

flink (_cs )/ xdata (_rt )/lts (离线hive处理, DWI-DWRDIM- DMD宽表-DM- guass建外表取hive 上DM层数据-guass上创建存储过程;实时guass处理,流程不变)/ BIDS

大数据中心项目

数据源:集体企业业务系统

技术栈:sqoop、infa、ets、cdh、hive、oracle

业务:经营类业务

视频软件后台数据分析项目

这个app主要是做一对一视频聊天和短视频的,通过对用户、主播的行为分析以及对app浏览日志的分析,为产品的迭代、产品运营状况提供数据支持

搜索关键词:

数据仓库、数仓、etl、大数据、数据开发、大数据工程师、hive、bi、sql、报表、数据可视化、数据分析

标准:

一定 离家距离最多1.5h以内要能到,越少越好

一定 工作内容 用 sqI 的大数据类工作,不找平台开发了

一定 公司规模 大于200人

一定 工作氛围 好

公司性质 国企>私企

一定 是否外包 非外包,实在不行至少是长期项目

一定工资水平1.5+

公司行业 传统行业>互联网行业

一定 加班问题 至少双休,一周最多3天晚上

一定 项目组人数 不算领导不少于3人

一定 最关键的是看看氛围及领导

个人技能:

熟悉电商零售主题域中行为及订单类业务

熟悉性能调优

熟悉hive、guass等olap数据仓库

熟悉postgresql、orcle、mysql等oltp数据库

熟悉数仓建模、数仓分层设计

华为云、天翼云各种服务的使用包括

1.熟悉CDH大数据平台及相关组件的搭建使用

2.熟悉数据收集工具Informatic、ETS、Flume、Sqoop的使用

3.熟悉大数据存储技术,包括HDFS、Kafka、Kudu

5.熟悉大数据处理技术及其底层原理,包括Hive、MapReduce、Spark

6.能使用Scala开发Sparkstreaming任务,对业务数据进行实时处理分析

7.能使用Java开发MapReduce任务及Hive的自定义函数

8.了解Linux系统的基本使用命令

9.了解Hbase、Storm、SparkSQL、Impala、clickhouse、keepalived等大数据平台相关技术

了解Docker技术及数据挖掘常用算法

项目概述

1.华为/荣耀商城项目

项目描述:

本项目是面向华为/荣耀商城的数仓(离线+实时),整合了多种异构数据源,为运营报表的数据分析提供数据支持

责任描述:

1.负责整个离线数仓中各层的数据开发

2.负责零售主题域中用户行为和订单的业务开发

3.负责与产品需求对接,并拆分需求给组内成员

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 217,734评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,931评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,133评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,532评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,585评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,462评论 1 302
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,262评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,153评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,587评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,792评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,919评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,635评论 5 345
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,237评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,855评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,983评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,048评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,864评论 2 354

推荐阅读更多精彩内容

  • 1.设置合理solt数 mapred.tasktracker.map.tasks.maximum每个tasktra...
    liuzx32阅读 2,286评论 0 0
  • 1. Overview: Structured Streaming是基于Spark SQL引擎的可扩展、具有容错性...
    奉先阅读 2,886评论 0 1
  • 【什么是大数据、大数据技术】 大数据,又称巨量资料,指的是所涉及的数据资料量规模巨大到无法在合理时间内通过传统的应...
    kimibob阅读 2,743评论 0 51
  • 一.Hadoop 1.hdfs写流程 2.hdfs读流程 3.hdfs的体系结构 4.一个datanode 宕机,...
    qydong阅读 2,338评论 0 0
  • 一、Spark简介 1.1 Spark是什么 Spark是一个通用的并行计算框架,由UCBerkeley的AMP实...
    这一刻_776b阅读 2,859评论 0 0