自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 字节电商-数仓面试

1.二叉树的广度优先,深度优先实现2.如何评价数仓的好坏3.通过上一问的几个方面如何给多个数仓打分-落地,量化4.a,b,c三张表a join b on a.id=b.id join c on b.id=c.id有几个map-reduce笔试:1.连续登录问题:求连续登录5天以上的人2.用户登录表,每次登录记录一条数据,登录时间精确到秒,求用户的登录总时长,如果两次登录时间超过三十分钟不作为连续登录,单条登录信息时间算03.微信红包 入参:红包个数,总金额 出参:数组,数组...

2021-10-13 15:32:21 1008 2

原创 面试记录-数仓

MT-买菜1.简介2.项目介绍3.数据迁移中的校验,如何进行,数据量大不能全量比对如何优化4.0到1的数仓具体建设内容,ods/dwd/dws分别做了啥,维度退化从哪一步开始5.数据治理可以做的点6.sql+python题...

2021-07-19 21:38:37 281

原创 DataX-数据转换自定义函数

使用DataX将mysql数据倒入Hive由于字段包含【\n】导致Hive数据串行,在DataX配置文件中加入Transformer解决。参考-DataX-github问题:DataX本身自带的函数没有类似replace的替换函数所以需要自定义groovy函数来实现。 字段本身会有空值导致数据被过滤,需要做容错。话不多说上代码 "transformer":[ { ".

2020-12-25 16:57:58 3577

原创 数仓-订单状态变化

引言:在数据仓库建设中,存在需要保存历史状态的情况,比如核心实体的历史状态/订单状态等。技术解决方案通常采用历史拉链表,但是拉链表计算逻辑复杂/成本高/使用困难,下面讨论其他的解决方案。累计快照事实表以订单模型为例:订单编号/状态/时间拉链表方案订单编号 状态 时间 开始时间 结束时间 001 下单 2020-12-03 2020-12-03 2020-12-04 001 付款 2020-12-04 2020-12.

2020-12-03 21:05:19 1094

原创 hive分区表修改增加列遇到的两个问题

由于需求改变,需要在原有的hive分区表中添加列,并每次充写最近30天的分区数据。问题:1.执行alter语句增加列后修改列的位置,导致数据串列。 2.重写分区后只有最新分区的新增列有数据,其他原有分区的该列为null。问题原因:1.hive增加列只是修改了hive的元数据,并没有改变hdfs的数据文件,其查询结果按照列的顺序和hdfs按分隔符分割后的数据对应,导致错列。2.原因与上面的相同,解决方法为删除旧分区后再重新写入,alter table db.table drop .

2020-11-26 14:31:37 782

原创 Python邮件与CentOS邮件

背景:由于项目需要对每日数据进行比对监控,所以需要把比对结果发送给各负责人,本文记录下Python发送邮件的几个步骤。需要模块:smtplibpip install smtplib闲言少叙上代码# -*- coding: UTF-8 -*-from email.header import Headerfrom email.mime.text import MIMETextimport smtplib#发送邮箱sender='xxxxx@qq.com'password='.

2020-05-14 15:32:27 338

原创 Python调用MySQL存储过程

使用Python处理MySQL逻辑时如果把SQL语句直接写在字符串中调用多次运行需要多次编译而且代码维护难度增加,MySQL存储过程将SQL逻辑封装解决这个问题,下面记录一下测试效果。创建测试存储过程delimiter $$DROP PROCEDURE IF EXISTS `add_person`$$CREATE PROCEDURE `add_person`(IN p_id in...

2020-04-15 14:29:44 2966

原创 数据仓库之拉链表

背景:在业务数据中存在会改变状态的数据,需要做历史分析,比如订单状态、登录位置等。问题:如何找到历史某一天的所有主体的状态。针对上述问题有三种解决方案:每天保存全量数据快照:每天都做数据全量备份,可直接查询历史某个节点的全量数据。 每天只做增量数据抽取:查询的时候需要按用户分组并过滤更新时间最近的数据。 每天做增量数据且完成拉链:查询指定开始和结束时间即可。上述三种方案的利弊...

2020-03-11 17:36:19 2941

原创 计算连续登陆最大天数

背景:在网站平台类业务需求中用户的「最大登陆天数」,需求比较普遍。原始数据:u0001 2019-10-10u0001 2019-10-11u0001 2019-10-12u0001 2019-10-14u0001 2019-10-15u0001 2019-10-17u0001 2019-10-18u0001 2019-10-19u0001 2019-10-20u...

2019-11-01 11:21:57 10247 11

原创 python 操作 hive

在使用Hadoop生态的时候需要使用脚本动态拼接hiveSQL来实现对数据的适应性操作。在业务中使用了两种方式,下面做下记录:1.使用hive -e 'sql '2.JDBC方式-- 第一种方式 使用 hive -e 来执行命令-- 这种方式的有点是操作简单,无需其他关联操作,使用的模块时osos.system('hive -e "select * from ..."')...

2019-07-01 10:09:27 1701

原创 hive几种join方式

hive处理表关联时由于数据量以及数据倾斜等问题会导致计算性能差甚至任务失败,下面记录一下hive的几种关联方式。1.common join普通连接,在SQL中不特殊指定连接方式使用的都是这种普通连接。缺点:性能较差优点:操作简单,普适性强2.map joinmap端连接,与普通连接的区别是这个连接中不会有reduce阶段存在,连接在map端完成适用场景:大表与小表...

2019-06-28 10:41:13 4700

原创 hive 提交任务时Job init failed

背景:oozie+hive+python.执行操作:在oozie中配置python脚本动态拼接SQL使用hive执行关键操作:hiveSQL中有动态分区报错信息:2019-03-26 13:53:51,437 WARN [main] org.apache.hadoop.mapreduce.v2.app.job.impl.JobImpl: Job init failedor...

2019-06-26 11:37:44 475

原创 Hive order by ,sort by ,distribute by, cluster by

Hive中对于排序给出了通用的「order by」与 非全局排序「sort by」至于其他两个函数是配合使用的。order by与sort by的区别:order by的使用与标准SQL相同,实现全局排序,但是缺点是由于要进行全局有序所以在reduce阶段只有一个reducer,也就意味着失去了发挥多节点并发的优势,性能较差。sort by是在分区内排序,在reduce阶段不会只剩...

2019-06-17 14:27:51 191

原创 Windows 可以使用 gitbash 但是cmd不能识别git命令

Windows下安装了git 鼠标右键可以看到 gitbash和GitUI 但是cmd命令行不能执行git命令原因:没有配置git.exe的路径到PATH环境变量中解决:在gitbash命令行中执行where git找到git.exe的路径,然后配置到环境变量PATH中重新启动CMD即可,注意配置环境变量的时候添加 git.exe所在文件夹即可...

2019-05-16 11:54:47 6686 1

原创 python 数据库 % 冲突问题解决

在使用python后台调用 MySQL数据库的时候会有 「%」的关键字冲突问题,比如 用Python后端读取 MySQL 中记录的逻辑,在 impala端执行,其中涉及到模糊匹配的 「%」会报错解决:SQL逻辑中的单个「%」换为「%%」即可,不错的 trip。...

2019-05-15 15:36:34 477

原创 pycharm urls 文件没有高亮显示

使用 pycharm 开发 django 项目发现配置urls文件时没有高亮语法显示,看起来相当难受,做下记录原因:pycharm将urls文件当做普通的文本文件处理了,效果如下解决:File--->settings---->editor--->File Types将urls.py移除即可...

2019-05-14 16:28:49 1587 1

原创 Python学习日志--文件读写

在编程过程中经常需要文件读写,Python的文件读写要比Java简单的多。打开文件的集中方式:# 1.只读open("path/filename","r")# 2.只写open("path/filename","w")# 3.追加open("path/filename","a")# 读取整个文件file = open("path/filename","r")fi...

2019-04-18 20:54:35 254

原创 Python学习日志--面向对象

面向对象的思想是高级语言中最好的特性,使程序的开发更加优美,维护起来更加简洁。Python中面向对象与Java中的面向对象在特性和功能方面几乎没有区别。面向对象的特征:封装性:可以将多个属性和方法(功能)封装,有利于统一维护 继承性:在继承父类之后将拥有父类的属性和方法,简化程序的开发,维护 多态性:相同函数由于执行的对象的不同产生的效果也就是执行的代码段不同示例1:封装...

2019-04-18 20:29:05 158

原创 Python 缺省参数,可变参数

Python中形参有确定参数,缺省参数,可变参数,关键字参数。具体的使用和区别如下确定参数:平时最常用的必传确定数量的参数即为确定参数缺省参数:在调用函数时可以传也可以省去的参数,如果不传将使用默认值可变参数:可变长度参数关键字参数:长度可变,但是需要以kv对形式传参举例:# 1.缺省参数 即有默认值的参数 例如:def test1(a, b = 3): prin...

2019-04-16 20:33:39 6211 1

原创 Python 列表,字典 常规操作

记录下Python 中 「列表」,「字典」的常规操作,备忘列表# 1.定义列表,以中括号声明即列表,无需声明类似List之类的东西var_name = [E1, E2, E3, E4]# 2.增var_name.append(E5)#增加单个元素,只是添加的元素在列表的尾部var_name.insert(1,E6)#增加单个元素到指定的位置(第一个参数)var_name...

2019-04-15 20:42:46 175

原创 lead窗口函数

lead函数在Impala中可以配合over使用,lead函数有三个参数lead(property,num,default)第一个参数「property」标识想查询的列,「num」标识相对于当前行的第num行,第三个参数是默认值。举例:-- 建表CREATE TABLE test(id string,name string);-- 插入数据INSERT INTO TAB...

2019-04-11 20:38:48 19398 3

原创 hive调优记录

1.设置小文件合并配置参数set mapred.max.split.size=100000000;set mapred.min.split.size.per.node=100000000;set mapred.min.split.size.per.rack=100000000;2.限制Reducer个数的上限3.以上两类参数的调优说明:设置split size是需要减少ma...

2019-04-01 19:53:59 138

原创 Kudu Schema 原则

概述:Schema 设计主要是 Primary Key,Partition Strategy,Column Type 前二者对性能影响明显后者面向业务。Column Design:Type 支持类型: Boolean,integer,float,double,unixtime,decimal,UTF-8 string,binary 其中decimal类型是...

2019-04-01 19:47:23 1006

原创 KUDU&Impala基本操作

概述:通过 Impala 可是实现 Kudu 的创建数据库,对表的增,删,查,改。----------------------------------------基本常用操作: --描述表 DESCRIBE tabel_name; --查看分区情况 SHOW PARTITIONS table_name; --查看当前使用数据库 SELECT current_database()...

2019-04-01 19:44:29 8005

原创 关于窗口函数的使用

Hive 窗口函数在计算部分与整体之间的关系中常用到,可以达到简化SQL,减少Hive 执行计划产生的MR数。实列:1需求:统计各城市用户在总体的占比数据结构:「user_city」表中有两个字段「user_name」,「city」,表示用户姓名与所在城市分析:上述需求中明显需要统计每个「城市」的用户数与「所有用户数」,然后做商得到最终结果实现1:不适用窗口函数se...

2019-03-30 10:29:31 388

原创 Excel数据导入hive

Hive导入Excel数据并不能使用类似一键导入的开关,只能先将数据进行格式转换,hive中简表,load数据的方式。打开Excel并另存为.txt格式文本文档excel与text转换 上传文件到HDFS 根据excel中的数据结构进行建表,注意结构顺寻要一致 load数据到hive表中,load data inpath '/hdfs/file/a.txt' into table tab...

2019-03-11 17:04:48 3320

原创 Hive 脚本--转义,引号的使用

在Hive脚本中需要对保留字符进行转义且Hue窗口支持使用单引号与双引号,但是脚本中与Hue中的使用是有差别的转义字符:如下SQL,使用Hive中的函数进行字符串分割select split('hello;hive;sql;hadoop',';')[0]上述SQL在Hue窗口可以正常数据「hello」但是在Hive脚本中会报错org.apache.hadoop.hive...

2019-03-01 16:45:59 8849

原创 Spark递归读取文件夹 删除HDFS文件

在使用Spark 计算HDFS数据时会遇到整个文件夹文件读取,删除输出路径的需求,特此记录一次递归读取文件:sc .hadoopConfiguration .setBoolean("mapreduce.input.fileinputformat.input.dir.recursive", true)删除已存在的路径:def deleteOutPutPath(sc: Sp...

2019-03-01 15:51:56 2154

原创 CDH 5.14安装Spark2服务

由于默认的Spark版本为1.6,开发任务需要Spark2所以记录一次Spark2的安装。一、JDK1.8集群的JDK版本升级,Spark2需要JDK1.8来支持 下载 JDK1.8 上传到/usr/share/jdk8文件夹下 每个节点都需要在相同的目录下配置JDK CDH配置中制定Java的目录       二、下载spark2spa...

2019-02-12 18:52:46 919

原创 scala 报错 org/scalacheck/Test$TestCallback 类找不到

背景:需要编写 Scala 单元测试,采用 ScalaTest 框架,代码如下:import org.apache.spark.{SparkConf, SparkContext}import org.scalatest._class WorldCountTest extends FlatSpec with BeforeAndAfter{ val master = "local[2]"...

2019-02-11 18:10:09 642

原创 Kudu Partition Tablet Bucket

kudu中关于分区的概念有三个:partition,tablet,bucket。概念:「partition」类似hbase中的「region」也就是将整张表来分片存储管理,是一个逻辑上的概念。「tablet」是分区中存储数据的最小单位,是物理概念,也就是数据在寻找存储位置的时候最终会落到一个确定的「tablet」中。「bucket」这个概念是比较容易混淆的,「bucket」是在ha...

2019-01-07 11:38:24 1270 1

原创 简单记录Gitlab-CI

CI也就是持续集成,需要自动化实现从更新代码到打包,测试,部署等工作。Gitlab自带的CI工具,总体思路是为自动执行任务提供服务器,当更新代码等操作发生是自动触发任务,这里执行任务的服务器就是Runner,具体执行的 任务需要进行配置,也就是.gitlab-ci.yml文件。1.配置Runner # For Debian/Ubuntu/Mintcurl -L https://p...

2018-12-28 10:53:00 188

原创 Tez替换MR作为hive的计算引擎

由于MR执行效率问题使用Tez替换MR,记录遇到的问题及解决方案

2018-12-25 20:31:46 5156 1

原创 记录一次Spark调优性能对比

在重写MR到Spark的过程中发现Spark的性能并没有达到我的预期,记录一次调优操作即效果对比本文涉及调优手段:持久化 分区数未调优之前的代码:val jsonStringRDD: RDD[String] = sc.textFile(s"$inputPath")val check1RDD = jsonStringRDD.filter(js => check1(...

2018-12-18 19:13:18 422

原创 恢复 Hive 删除表,数据库

背景:CDH集群hue窗口操作,删除database;hive中使用 drop table或者drop database 删除数据之后是可以进行恢复的,truncate掉的数据目前无法恢复。删除掉的数据可以在trash文件夹中找到,点击restore恢复至删除前的文件位置,如果删除的时间比较久回收站被清除也无法恢复。恢复步骤:恢复数据至原位置   找到删除的文件夹...

2018-12-15 16:25:34 7092 2

原创 spark写 本地文件报错

环境:spark1.6,window10,Hadoop2.6报错:rdd.saveastextFile(outPath)原因:.在spark bin目录下没有winutils.exe问价 本地dill问价有损坏 c/windows/system32中没有hadoop.dll文件解决:查看文件夹,没有文件去下载并放到文件夹下;如果有文件尝试修复本地环境,下载DirectX Repa...

2018-12-11 15:59:06 1172

原创 hive外部表指向多个文件/文件夹

hive建外部表正常指向一个文件或者文件夹时很简单,然而需求是指向两个不同的文件夹起上级目录中还有其他文件不能直接指定上级目录,特此记录。新建外部分区表 //新建外部分区表create external table test(content string) partitioned by(date string);   将不同的文件/文件夹指向不同分区即可 //递归读取...

2018-11-21 11:52:36 5095 2

原创 hue端查看任务日志报错

环境:CDH5.14.0,HIVE,YARN,HDFS都是cdh默认的版本背景:配置资源池的时候将resource manager的权限从 * 改为指定用户和group现象:在hue中执行workflow后看不到日志报错:User [dr.who] is not authorized to view the logs for attempt_1542114179367_1068_...

2018-11-21 11:17:34 3556

原创 oozie集群阻塞

环境:CDH5.14.0,oozie,hvie,yarn,hdfs都是默认版本。背景:生产中使用oozie调度多个任务流,其中包括hive脚本,MapReduce程序,python脚本。现象:集群中多个oozie launcher的MR占用大量资源,真正跑数据的任务在hung on等待状态,导致集群阻塞。问题分析:使用oozie调度时启动数据任务前会启动对应的oozie launc...

2018-11-21 10:52:51 1451

原创 sparkRDD的持久化问题

spark的rdd与其他dataSet都可以做持久化,关于持久化的等级也可根据自身需求选择关于持久化等级可查看官网http://spark.apache.org/docs/latest/rdd-programming-guide.html#rdd-persistence这里记录一次关于持久化的直观感受;在项目中需要对一批数据做三次校验,1.通用校验,2.字段名称合法性校验,3.字段值得...

2018-11-17 11:55:57 526

空空如也

空空如也

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

TA关注的人

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