自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Hive】判断字符串中是否包含最近一个月的日期

最近遇到一个场景,就是要判断某个字段中的字符串的值是否包含近30天的日期date_log2020-09-202020-06-10|2020-06-11|2020-06-13|2020-06-152020-08-20|2020-08-18|2020-08-19|2020-08-23当时想过几种方案:1.用explode列转行爆炸出来一个个去判断处理,但是数据量太大,效率低,舍弃了;3.2.用正则匹配。select if(date_log like '%2020-$...

2020-11-02 23:48:15 1186

原创 【试题】找出斗地主中的顺子

试题大意:输入一组数据,包含2~10,以及J Q K A,不包含大小王。找出牌中的顺子。输入: 2 9 J 10 3 4 K A 7 Q A 5 6输出: 3 4 5 6 7 9 10 J Q K Ainput_list = str(input()).split(" ") instead = []for i in input_list: if i.isdigit() and i != '2': instead.append(i...

2020-10-28 22:41:34 4260 2

原创 【Python】数组切片后组成新的数组输出

items = [numlst[i:i+200] for i in range(0, len(numlst), 200)]

2020-10-19 22:16:47 737

原创 【scala】打印输出金字塔和乘法口诀表

打印金字塔import scala.io.StdInobject PrintPyramid { def main(args: Array[String]): Unit = { println("请输入一个数:") val n= StdIn.readInt() f1(n) } // 法1,简洁 def f1(n: Int) = { //这样的函数,问题是*星号之间没有空格 for (i <- 1 to n){ println(" "

2020-10-15 00:26:59 1562 1

原创 【scala】递归函数调用原理详解

分享今天看到的一句话,与大家共勉。先看做了什么,再看能做什么,最后才考虑想做什么。今天在复盘scala调用递归函数,下面用一段代码来分析一下:问题引入:猴子吃桃子问题 有一堆桃子,猴子第一天吃了其中的一半,并再多吃了一个!以后每天猴子都吃其中的一半,然后 再多吃一个。当到第十天时,想再吃时(还没吃),发现只有 1 个桃子了。问题:最初共多少个桃 子?代码实现(以第7天为例)object recursive_fun { def main(args: Array[..

2020-10-13 23:06:38 279

原创 【Scala】方法和函数

【Scala函数的定义】5.4.1基本语法def 函数名 ([参数名: 参数类型], ...)[[: 返回值类型] =] {语句...return 返回值}1) 函数声明关键字为 def (definition)2) [参数名: 参数类型], ...:表示函数的输入(就是参数列表), 可以没有。 如果有,多个参数使用逗号间隔3) 函数中的语句:表示为了实现某一功能代码块4) 函数可以有返回值,也可以没有返回值形式 1: : 返回值类型 = 返回值形式 2: = 表示返回值类型不确定.

2020-10-12 23:18:18 75

原创 【Scala】for循环控制步长的方式

object stepfor { def main(args: Array[String]): Unit = { for (i <- 1 to 10) { println("i=" + i) } //控制步长控制为 2 //法1:利用Range函数。 for (i <- Range(1, 10, 2)) { println("i=" + i) } .

2020-10-12 20:57:09 3120

原创 【Scala】基础语法

1. println(s"名字是"+${name}+\t"年龄是"+${age+10}) 这边s是代表后面有变量需要解析,不能去掉 用$符引用变量,加了花括号之后,还可以进行计算2. printf("名字是%s 年龄是%d 身高是%f", name, age, height) 可以用%s, %d, %f等进行占位3. 在idea中,格式化代码的快捷键是 Ctrl+Alt+L4. Scala关联源码:将源码包放在scala的lib目录下,向下解压两次,再关联即可。5. 在Sc.

2020-10-11 22:13:51 118

原创 【Scala】为什么编译后生成两个class文件?scala$.class和scala.class的区别

看下面一段Scala入门的代码:object HelloScala{ def main(args:Array[String]):Unit = { println("hello, scala~~") }}编译后生成如下class文件:结合这两张截图作一些说明:1.object表示一个伴生类对象2.HelloScala就是对象的名字,它底层真正对应的类名是HelloScala$,对象是HelloScala$类型的一个静态对象MODULE$3....

2020-09-27 22:46:18 1146

原创 【Hive】数据倾斜优化 shuffle, join, group by

总结一下数据倾斜的优化。首先从导致数据倾斜的原因方面分析入手,主要是groupby和join的相关操作,这两个操作都会把相同的key拉到同一个reduce,如果其中某些key分布不均数量过大,这就会导致数据倾斜了。groupby导致的数据倾斜优化:select --最后汇总 pkg ,sum(part_cnt) as installed_cntfrom ( --先局部关联 select substr(pkg_new, 1, lengt..

2020-09-24 23:50:03 3274 2

原创 【Hive】报错Container is running beyond physical memory limits.4.0 GB of 4 GB physical memory used

set mapreduce.map.memory.mb=8192;set mapreduce.map.java.opts=-Xmx8192m;set mapreduce.reduce.memory.mb=4000;set mapreduce.reduce.java.opts=-Xmx4000m;Container [pid=105939,containerID=container_e03_1599034722009_11568264_01_000200] is running beyond..

2020-09-24 22:21:50 1345

原创 大数据知识宝典(Hadoop篇之MapReduce)

注:本文主要摘录于尚硅谷大数据的学习资料,仅作学习记录,请勿用于商业用途。MapReduceHadoop 序列化 1 为什么要序列化? 一般来说,“活的”对象只生存在内存里,关机断电就没有了。而且“活的”对象只能 由本地的进程使用,不能被发送到网络上的另外一台计算机。 然而序列化可以存储“活的” 对象,可以将“活的”对象发送到远程计算机。 2 什么是序列化? 序列化就是把内存中的对象,转换成字节序列(或其他数据传输协议)以便于存储(持 久化)和网络传输。 反序列化就是

2020-09-21 23:32:20 185

原创 大数据知识宝典(Hadoop篇之HDFS)

注:本文主要摘录于尚硅谷大数据的学习资料,仅作学习记录,请勿用于商业用途。HDFSHDFS 写数据流程:1)客户端通过 Distributed FileSystem 模块向 namenode 请求上传文件,namenode 检查目标 文件是否已存在,父目录是否存在。 2)namenode 返回是否可以上传。 3)客户端请求第一个 block 上传到哪几个 datanode 服务器上。 4)namenode 返回 3 个 datanode 节点,分别为 dn1、dn..

2020-09-21 22:14:19 121

原创 大数据知识宝典(Spark篇之shuffle过程)

注:本文主要摘录于尚硅谷大数据的学习资料,仅作学习记录,请勿用于商业用途。Spark shuffle过程HashShuffle过程介绍Spark丰富了任务类型,有些任务之间数据流转不需要通过Shuffle,但是有些任务之间还是需要通过Shuffle来传递数据,比如wide dependency的group by key。Spark中需要Shuffle输出的Map任务会为每个Reduce创建对应的bucket,Map产生的结果会根据设置的partitioner得到对应的bucketId,然后填充到

2020-09-21 00:27:42 662

原创 大数据知识宝典(Spark篇之RDD)

注:本文主要摘录于尚硅谷大数据的学习资料,仅作学习记录,请勿用于商业用途。​​​​​Spark部分Spark是一种快速、通用、可扩展的大数据分析引擎,是用Scala进行编写的。Spark的内置项目如下:Spark应用提交一旦打包好,就可以使用bin/spark-submit脚本启动应用了. 这个脚本负责设置spark使用的classpath和依赖,支持不同类型的集群管理器和发布模式:./bin/spark-submit \--class <main-class&gt...

2020-09-20 23:47:06 312

原创 大数据知识宝典(Hive篇)

注:本文主要摘录于尚硅谷大数据的学习资料,仅作学习记录。​​​​​Hive部分1.Hive 其他命令操作 1)退出 hive 窗口: hive(default)>exit; hive(default)>quit; 在新版的 oracle 中没区别了,在以前的版本是有的: exit:先隐性提交数据,再退出; quit:不提交数据,退出; 2)在 hive cli 命令窗口中如何查看 hdfs 文件系统 hive(default)>dfs -ls /;.

2020-09-20 12:32:12 213

原创 【Python】json dumps和loads的用法

json.dumps():用于将dict类型的数据转成str,因为如果直接将dict类型的数据写入json文件中会发生报错,因此在将数据写入时需要用到该函数。json.loads():用于将str类型的数据转成dict。

2020-09-18 14:58:42 187

原创 【运营】关于A/BTest的简单介绍

A/BTest:分离式组间试验,也叫对照试验,科研领域(药物测试)中已广泛应用。简单来说,A/B测试在产品优化中的应用方法是:在产品正式迭代发版之前,为同一个目标制定两个(或以上)方案,将用户流量对应分成几组,在保证每组用户特征相同的前提下,让用户分别看到不同的方案设计,根据几组用户的真实数据反馈,科学的帮助产品进行决策。【参考】1.AppAdhoc A/B Testing使用文档2.马蜂窝ABTest多层分流系统的设计与实现...

2020-09-14 23:39:06 4214

原创 【Python】抓取网页图片并保存到本地和Word(ImagePIL和python-docx的使用)

记录爬虫利用pyquery爬虫保存图片时遇到的一些问题:1. cannot write mode P as JPEG解决办法:将模式“P”转化为“RGB”模式if img.mode == "P": img = img.convert('RGB')2.(PIL) Image.save保存图片后,图片大小为0KB解决办法:设置quality参数im.save(img_name, quality=95)3.Inches(self.px_width / self.hor...

2020-09-07 23:52:58 962

原创 【Hive】grouping sets 中的Grouping__ID过滤不起作用

SELECT key, value, GROUPING__ID, count(*)FROM T1GROUP BY key, valueGROUPING SETS ((), (key))HAVING GROUPING__ID = 1这个sql语句中Grouping__ID过滤不起作用,没有结果返回。下面是官方的解答:问题描述:Filter on Grouping__ID does not work properly类型:Bug受影响的版本:1.3.0,2.0.0修复的版本:1.3...

2020-09-06 17:21:30 547

原创 【Hive报错】Grouping sets aggregations (with rollups or cubes) are not allowed if aggregation function..

Grouping sets aggregations (with rollups or cubes) are not allowed if aggregation function parameters overlap with the aggregation functions columns如果聚合函数参数与聚合函数列重叠,则不允许分组集聚合(使用汇总或多维数据集)Grouping sets 里面的字段和sum case when 的字段重复了。params重复。把这个外面再包一..

2020-08-08 11:00:08 7303

原创 【Hive】判断字符串中是否包含某个特定字符

一、用like '%2%'select '32002,32002,11001,11001,' like '%2%';二、用regexp正则函数select '32002,32002,11001,11001,' regexp('.*2.*');>>>true

2020-08-08 09:48:46 28911

原创 【数据分析】常用的数据分析思维和算法

数据分析思维:漏斗思维,分类思维,平衡思维,A/B test,金字塔原理

2020-07-31 21:05:27 319

原创 Hive案例之开关状态类解决方法

背景工作中遇到一个需求,统计某个开关的开启和关闭的占比,需求内容比较简单,但是埋点信息比较乱。有点击这个开关的埋点,点击一次记录一次(e_id=aaa|02;click=1),和某一时刻这个开关状态的埋点,每天随机上报多次(e_id=aaa|01;status=1开,status=2关)。但是无法确定上报的状态埋点就是最终的状态,所以需要结合这两个埋点的数据来确认。数据格式如下:id info time

2020-07-19 13:55:13 177

原创 【Hive】数据倾斜之join和group by导致的解决案例

Hive调优

2020-07-14 00:43:43 979 1

原创 【Hive】正则表达式匹配/过滤中文汉字

not rlike '[\\\u4e00-\\\u9fa5]'

2020-07-07 21:15:32 5612

原创 【Python】pip install 远程主机强迫关闭了一个现有的连接 问题解决

在新的电脑上配置Python环境,pip安装第三方库时遇到了一些问题,记录一下。WARNING: Retrying (Retry(total=0, connect=None, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', ConnectionResetError(10054, '远程主机强迫关闭了一个现有的连接。', None, 100

2020-06-28 13:07:34 10098 1

原创 【Hive】用sort_array和collet_list对一组数字进行排序,取最大值或最小值

"value" :" {-15, -56, -75, -32, -61}" 取最大值或最小值select sort_array(collect_list(cast value as double))lateral view explode

2020-06-22 23:32:42 6137 1

原创 【Hive】max函数和concat函数的结合使用,实现排序效果

需求:根据日期排序,取6月1号至6月10号这10天中不同id上报的最新的一条数据。方法一:用开窗函数row_number。select id ,infofrom ( select id ,info ,row_number() over(partition by id order by date desc) as rank from table1 w..

2020-06-11 13:13:02 1382

原创 【Hive】数据处理--字符串函数split,substr和posexplode函数结合使用

-- {"motiondata":"1-0-1-0-1-0-1-0-1-0-1-0-1-0"}开关类型 开关状态 触发次数智能体感 1 开 2隔空解锁 0 关 0息屏查看 1 开 3免提接听 1 开 2智能切换 0 关 0智能接听 1 开 0智能呼叫 1 开 1...

2020-06-07 11:38:37 898

原创 【Hive】输入一行输出多行,posexplode方法及UDTF方法介绍

1. 用sql的方法:map_keys,map_values,lateral view posexplode结合select name ,course ,scorefrom ( select name ,map_keys(params) as array_courses ,map_values(params) as array_scores from ...

2020-05-31 14:20:44 973

原创 【Hive】explode之后过滤整条数据

背景:IMEI value 111 99 111 60 111 55 222 90 222 102 222 99 这个是explode之后的结果,假设现在有一个条件 value要大于90的数据才满足,那小于90的数据要怎么过滤?比如111,只有一个数据是99,其他都小于90,不满足了。怎么样过滤整个111的数据,而不只是第一行数据?可以对imei打标签?先对每行value打标签:if(value<90,1,0) t.

2020-05-30 16:03:15 510

原创 【Hive】在终端执行hivesql相关的shell命令匹配中文字符串注意事项

在终端执行如下命令:hive -e "select a,b,c from tb1 where a not rlike '^[\\u4e00-\\u9fa5]$'"目的是要过滤掉a字段中的中文的,但是这样没有效果。需要加上转义符 \ 才可以。hive -e "select a,b,c from tb1 where a not rlike '^[\\\u4e00-\\\u9fa5]$'"但是在hivesql中,可以直接使用'^[\\u4e00-\\u9fa5]$' 进行中文匹配。...

2020-05-11 20:55:12 539

原创 【Hive】case when 使用注意事项

记录下hivesql 的 case when 的注意事项:1. sum ( case when ... then ... else ... end ),不要漏了else里面的情况,这个可能会导致计算错误。--近一个月,不同事件人均发生次数select t2.type, sum(tot) as total, sum(user_num) as total_user_nu...

2020-05-10 14:38:02 4559

原创 Python post请求报错 Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported

Python用post方式请求接口数据的时候,报错:Content type 'application/x-www-form-urlencoded;charset=UTF-8' not supported查询资料是由于没有设置Content-Type 的原因。在headers在添加:header = {'Content-Type':'application/json;char...

2020-04-22 13:20:23 4573

原创 【Spark】RDD算子reduceByKey执行原理,以reduceByKey((a, b) => a + b)为例

我们都知道reduceByKey是RDD中常用的聚合操作。那它内部的执行原理是怎么样的呢?>>data.txtjavapythonphppythongoscalajavaval lines = sc.textFile("data.txt")val pairs = lines.map(s => (s, 1))val counts = pairs.red...

2020-04-21 23:32:58 1460

原创 Python编程操作注意事项(持续更新)

1. 利用os模块操作Linux系统的时候,文件拼接要注意:path_name = "home/xxx/data"file_name = "test.txt"full_dir = path_name + file_name>>> home/xxx/datatest.txt这样的结果不是我要的,很容易因为看粗心导致错误。注意最后一个文件名后面加上 ”斜杠/“。...

2020-04-15 20:44:34 235

原创 Python global关键字全局变量用法

Python global关键字全局变量用法def get_info(): list_1 = [1,2,3,4,5] global number number = len(list_1)if __name__ == '__main__': get_info() print("数组的个数为:" + number)>>> 数组的个数...

2020-04-15 19:44:56 919

原创 Python sys外部传参使用注意事项

Python sys模块调用外部参数时,下标是从1开始,不是从0开始,不然结果很悲剧。arg1 = sys.argv[1]arg2 = sys.argv[2]

2020-04-15 18:00:48 293 1

原创 Hive删除含有特殊字符/转义字符的分区

之前写的py脚本里面需要传日期参数:python ./xxxx.py {dt}# 正确应该为 python ./xxxx.py ${dt}但是当时忘记引用变量了,结果在分区中有一个含有特殊字符的分区:show partitions <table name>>> dt=%7Bdt}用传统的删除分区的语句无效,把单引号换成双引号也没有效果。经试了一番发...

2020-04-13 23:08:35 2023

空空如也

空空如也

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

TA关注的人

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