自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 __多次对话_Python_

print(f'接受到来自客户端{ip_adress}的请求{reccv_msg.decode()}')#需要对传输过来的请求改变性质。reccv_msg =service_client_socket.recv(1024) #字节 bytes。service_client_socket.send(send_msg.encode())#变str为bytes。print(f'接收到来自服务端的消息:{recv_msg.decode()}')print('等待客户端请求。

2023-10-13 21:28:38 66

原创 __网络编程_python

print(f'接受到来自客户端{ip_adress}的请求{reccv_msg.decode()}')#需要对传输过来的请求改变性质。service_client_socket.send(send_msg.encode())#变str为bytes。print(f'接收到来自服务端的消息:{recv_msg.decode()}') #变bytes为str。client_socket.connect(('127.0.0.1',8080)) #客户端采用双括号。print('等待客户端请求。

2023-10-13 20:47:56 55

原创 __装饰器

ret = round(s2 - s1 ,float_decimal) #在最外层加入float_decimal的固有函数用于此处,来限定小数点位数。result = func(*args, **kwargs) #也可以为空,因为此刻被装饰函数也就fun1()并未传入参数。#对其增加额外的功能 同时用到外层函数参数 也就是get_time 和 func_outer 的函数。def wrapper(*args, **kwargs): #也可以为空,因为此刻被装饰函数并未传入参数。

2023-10-12 10:56:02 48

原创 __私有属性

print(self.__func2()) # 可以调用。print(lady._Women__age) # 强行调用私有属性。print(self.__age) # 可以调用。self.name = name # 公开属性。lady._Women__func2() # 强行调用私有方法。self.__age = 18 # 私有属性。# print(lady.__age) # 不可以调用。# 实例对象._类名__属性或方法名 可强行突破!# lady.__func2() # 不可以调用。

2023-10-10 20:21:14 52 1

原创 _Linux命令

ls 展示目录中的文件信息ls# -a 展示所有文件内容,包括隐藏文件(以点开头的文件内容)# -l 以列表形式详细展示文件内容# -h 以合适的单位展示文件大小, 配合-l进行使用# 以上三个选项可以随意自由组合,顺序可以随意调整# ls 可以查询相对路径和绝对路径ls /bin由于我们开发中经常使用ls -l 查询文件内容,所以centos中提供了一个快捷指令llll 全等于 ls -l 同时-a和-h也可以使用。

2023-10-10 19:58:14 45 1

原创 __Python 面向对象

super(SuperDog, self).__init__(name=name) # 作用同上 todo super(本身子类,self).函数(参数)print(Animal('哺乳动物')._Animal__siyouFunction()) # todo 加上__类名前置 以强制取用。SuperDog(name='hahah', color='彩条').run() # 执行的是SmallDog.run()Animal('哺乳动物').myFunction() # 调用实例方法。

2023-10-10 19:57:07 43 1

原创 _分桶与分区

注意: 如果我们想让分区表的查询效率提升 我们要根据分区字段进行筛选,如果不使用分区表筛选和使用普通表无异。-- 结论: 两种方式导入数据时,结果完全一致,且都拆分为了3个文件,而3就是分桶数量.分区表将数据拆分为不同的目录存放,分桶表将数据拆分为不同的文件存放。分区表和分桶表都必须按照分区,分桶字段进行操作才可以达到优化的目的。分区表使用的分区字段是元数据字段,分桶表使用的字段是实体字段。-- 步骤1: 创建一个未分桶的临时表,将数据全部加载进来。-- 在分桶表中,分桶字段,必须是已经存在的实体字段.

2023-09-26 21:02:45 51

原创 _Map和reduce数量调整

②另外,有多少个reduce,就会有多少个输出文件,如果生成了很多个小文件,那么如果这些小文件作为下一个任务的输入,则也会出现小文件过多的问题;如果一个任务有很多小文件(远远小于块大小128m),则每个小文件也会被当做一个块,用一个map任务来完成,而一个map任务启动和初始化的时间远远大于逻辑处理的时间,就会造成很大的资源浪费。比如有一个127m的文件,正常会用一个map去完成,但这个文件只有一个或者两个小字段,却有几千万的记录,如果map处理的逻辑比较复杂,用一个map任务去做,肯定也比较耗时。

2023-09-26 20:59:14 123

原创 _HDFS相关

每个packet写入完成后会进行ack回调,收到回调后会写入下一个packet,如果一个block写满后会开启下一个block块继续写入,直到数据写入完成。向DataNode写入数据时,不是同时写入三个服务器,而是间将第一个副本写入后,由该副本所在的DataNode备份到其他服务中。所有数据写入完成后,需要向NameNode汇报写入完成,NameNode查询确认后保存元数据信息,方可使用该文件.将日志文件备份,将原日志文件修改为新的名称,后续的日志信息将记录在新文件中,备份文件将用于数据合并。

2023-09-26 20:56:54 34

原创 _MapReduce相关

split size 默认和block size大小相同,也就是在不单独配置的情况下,有多少个block块,就开启多少个map任务。,由于MapTask阶段已经对数据进行了局部的排序,ReduceTask只需保证Copy的数据的最终整体有效性即可。,这些数据默认会保存在内存的缓冲区中,当内存的缓冲区达到一定的阀值的时候,就会将数据写到磁盘之上。:当内存中的数据量达到一定的阀值(80%)的时候,就会将数据写入本地磁盘,在。在ReduceTask远程复制数据的同时,会在后台开启两个线程对内存到本地的。

2023-09-26 20:52:24 48

原创 _Hive & HDFS

hive的元数据存储的是数据的库名,表名,字段信息,表的类型,创建修改时间.......hive中没有数据,因为hive不能存储数据,需要借助hdfs进行数据存储.hdfs的元数据存储的是文件的名称,大小,副本数量,创建修改时间.....hdfs中的元数据存储体积越来越大,我们怎样控制呢?hive中的元数据是用来将结构化数据映射为表的.hdfs中的元数据是用来查询和记录文件状态的.hive中的数据和hdfs中的数据有什么区别?hdfs元数据存储在内存和磁盘中。

2023-09-26 20:46:29 63

原创 _Shell脚本问题

1. 在计算机科学中,shell(壳)是操作系统的壳,操作系统相对于shell来说为核2. shell是用户与操作系统之间的接口程序3. shell是一个命令解释器-shell自己有内置的命令集,shell脚本编程就是操作这些命令。

2023-09-26 20:44:58 53

原创 _数据倾斜问题

在hive中, 执行一条SQL语句, 最终会被翻译为MR , MR中mapTask和reduceTask都可能存在多个, 数据倾斜主要指的整个MR中reduce阶段有多个, 每个reduce拿到的数据量并不均衡, 导致某一个或者某几个reduce拿到了比其他reduce更多的数据, 导致处理数据压力, 都集中在某几个reduce上, 形成数据倾斜问题, 导致执行时间变长, 影响执行效率,-- 阈值, 此参数在实际生产环境中, 需要调整在一个合理的值(否则极易导致大量的key都是倾斜的)

2023-09-26 20:39:38 42

原创 _连续问题

某日活跃用户(用户 id)在后续的一周内的留存情况(计算次日留存用户数,3 日留存用户数,7 日留存用户数)指标定义:某日活跃用户数,某日活跃的去重用户数。N 日活跃用户数,某日活跃的用户数在之后的第 N 日活跃用户数。N 日活跃留存率,N 日留存用户数 / 某日活跃用户数例:登陆时间(2023-04-01)去重用户数 10000,这批用户在 (2023-04-07) 日仍有 7000 人活跃,则 7 日活跃留存率为 7000/10000=70%

2023-09-26 20:36:42 68

原创 _开窗相关

- 问题: 分组聚合后,数据条目数减少,存在数据的丢失现象,在大数据开发中我们一般不希望在计算指标时造成大量的数据丢失,所以会使用开窗函数。-- rank 和 dense_rank组内进行编号,没有排序则都标记为1, row_number 组内编号,与大小无关,从上到下依次编号。-- ntile 是按照分组排序后的数据,将每一个分组中的数据拆分为n份,每份数据尽量相同,如果不同,优先让最小办好的数据多一个。-- 计算完成后数据条目数不变,数据没有丢失,且计算了各组的访问量,聚合范围是分组内部.

2023-09-26 20:35:47 50

原创 Linux中时间参数

I[FMT], --iso-8601[=FMT]:按照 ISO 8601 格式输出时间,FMT 可以为'date'(默认),'hours','minutes','seconds','ns'。--rfc-3339=FMT:按照 RFC 3339 格式输出,FMT 可以为'date', 'seconds','ns'中的一个,可用于设置日期和时间的精度,-d可选的参数有 'years','months','days','hours','minutes','seconds'等.--version:输出版本信息。

2023-09-26 20:35:01 88

原创 _Hive 优化

第一个 MR Job 中,Map 的输出结果集合会随机分布到 Reduce 中,每个Reduce做部分聚合操作,并输出结果,这样处理的结果是相同的Group By Key有可能被分发到不同的Reduce中,从而达到负载均衡的目的;默认的max是999。对于扫描、过滤数据的逻辑比较复杂、输入数据量较大条数较多的场景:根据集群总体资源情况,以及当前用户的资源可用情况,在不影响其他业务正常运行的条件下,map数量需要适当增大,增加并行处理的力度。传统方式中,对数据的处理是以行为单位依次处理的。

2023-09-26 20:32:53 39

原创 Sqoop 的基本使用

mysql.test.emp_add.id vs hive.db_1.emp_add.id_2 -- todo 解决方案: 使用别名。--table tb_emp_add_hive2mysql \ # 待导入的表表结构需提前构建。--hcatalog-table emp_add (导入的hive表 结构要提前建好)--fields-terminated-by '\t' \ # 指定导出数据的分隔符。列名都一致, 但是 顺序不一致是否可以导入?

2023-09-26 20:31:48 62

原创 _索引相关

在开启布隆过滤索引后, 可以针对某个列, 或者某几列来建立索引, 构建索引后, 会将这一列的数据的值存储在对应script片段的索引信息中, 这样当进行 等值查询的时候, 首先会到每一个script片段的索引中, 判断是否有这个值, 如果没有, 直接跳过script, 从而减少数据扫描量, 提升效率。建议只要数据存储格式为ORC, 建议将这种索引全部打开, 至于导入数据的时候, 如果能保证有序, 那最好, 如果保证不了, 也无所谓, 大不了这个索引的效率不是特别好。要求表的存储类型为ORC存储格式。

2023-09-26 20:30:41 35

原创 字段时间相关

将时间戳类型转换为字符类型转成 %Y/%m%d 类型字符。将时间戳对象 转成 %Y-%m-%d 格式的字符串。只是转换格式 后可跟// 也可跟- -将字符串类型时间转换为时间戳类型。

2023-09-26 20:28:58 36

原创 count相关

count(列名)只包括列名那一列,在统计结果的时候,会忽略列值为空(这里的空不是只空字符串或者0,而是表示null)的计数, 即某个字段值为NULL时,不统计。(2)如果表有多列,且存在主键,count (主键列名)效率最优,其次是:count (1) >count( *)。count(1)包括了忽略所有列,用1代表代码行,在统计结果的时候, 包括列值为NULL的行。count(*)包括了所有的列,相当于行数,在统计结果的时候, 包括列值为NULL的行。count(1):统计所有的记录(包括null)。

2023-09-26 19:58:21 47

空空如也

空空如也

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

TA关注的人

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