- 博客(100)
- 收藏
- 关注
原创 【Spark】广播变量导致Not enough memory to build and broadcast the table to all worker nodes
java.lang.OutOfMemoryError: Not enough memory to build and broadcast the table to all worker nodes 核心错误:Spark 尝试将一张表广播(Broadcast) 到所有 Executor 节点时,Driver 内存不足以存储这张表的数据,触发内存溢出;
2025-12-09 16:59:04
311
原创 【单例模式】简介
单例模式要保证一个类在整个系统运行期间,无论创建多少次该类的对象,始终只会有一个实例存在。就像操作系统中的任务管理器,无论何时何地调用它,都是同一个任务管理器在工作,不会同时出现多个不同的任务管理器实例。这种方式在第一次调用 get_instance 方法时才创建实例,但在多线程环境下可能会创建多个实例。这种方式在类加载时就创建实例,避免了多线程问题,但如果实例创建过程比较耗时,会影响系统的启动性能。通过加锁的方式保证在多线程环境下也只会创建一个实例,但每次获取实例都需要加锁,会影响性能。
2025-04-30 14:47:47
599
原创 【指标设计】归纳、沉淀指标设计的方法
指标是一个被定义的,用来对事实进行量化抽象。这个抽象过程可以是一次的,也可以是多次的当一个事实比较简单的时候,例如某个物品的轻重,我们用通过质量这一个指标就可以衡量清楚。但当一个事实更复杂一些的时候,例如一个人的胖瘦,也许仅仅是用质量(体重)就不足以说明这个事实。这个时候我们可能会用BMI、体脂率等经过了两次抽象的指标。当这个事实变得更加复杂,例如一个国家的经济状况,我们会用GDP,这个一个进行了很多层复杂抽象、涉及到大量数据[1]的指标。甚至是仅仅一个指标也完全不足以描述出这个事实的重要特征;
2025-04-27 16:59:03
460
原创 【机器学习】基础知识
然而,在评估模型时,并不一定非要使用新数据,而是可以把当前的数据集划分为两个部分一部分训练集,用于生成和调整预测模型;均方根误差是一个常用的回归指标,尤其可用于避免较大的误差:因为每个误差都取了平方,所以大误差就会被放大。**这个新参数会通过认为增大预测误差,对模型复杂度的增加进行惩罚,从而使算法同时考虑复杂度和准确度,使模型保持简单有助于提高模型的泛化能力。为了最大限制地减少预测误差,可能会增加预测模型的复杂度,从而导致出现过拟合结果,即预测边界过度复杂。,从而获得更精简的变量集,以供进一步分析。
2025-03-27 16:05:10
1438
原创 【java】对象的内存存储
创建类的多个对象时,每个对象在堆空间中有一个对象实体。每个对象实体中保存着一份类的属性。如果修改了某个对象的属性值时,不会影响其他对象此属性的值。此时p1、p3两个变量指向了堆空间的同一个对象实体。如果通过齐总某一个对象变量修改对象的属性时,会导致另一个对象变量此属性的值。强调1:创建了Person类的两个对象。强调2、声明类的两个变量。
2024-11-05 15:46:00
345
原创 【LeetCode算法笔记】Day1:动态规划基础
简称DP,是一种求解多阶段决策过程最优化问题的方法。在动态规划中,通过把原问题分解为相对简单的子问题,先求解子问题,再由子问题而得到原问题的解。
2024-10-14 11:36:06
982
原创 【数组】复习与企业真题
数组,就可以理解为多个数据的组合是程序中的容器:数组、集合框架(List、Set、Map)数组存储的数据的特点:依次紧密排序的,有序的,可以重复的此时的数组、集合框架都是在内存中对多个数据存储数组的其他特点:一旦初始化,其长度就是确定的、不可更改的。
2024-09-25 17:52:17
760
原创 【java】一维数组
为了提高运行效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。与目前数组相关的内存结构: int [] arr = new int[]{1,2,3}将内存区域划分为5个部分,程序计数器、虚拟机栈、本地方法栈、堆、方法区。java中的内存结构是如何划分的?(主要关心JVM的运行时内存环境)2、堆:用于存放数组的实体(即数组中的所有元素).比如:1,2,3。1、虚拟机栈:用于存放方法中声明的变量.比如:arr。
2024-08-07 18:24:07
438
原创 【Java】变量与运算符
3、变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz。拓展:在内存中,byte、short、char、boolean、int、float:占一个slot。可以的,因为char使用的是unicode字符集,包含了世界范围内所有的字符。2、类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz。例如:age、name、bookName、main、getName。6、int i=0;1、包名:多单词组成时,所有字母都小写:xxyyzzz。
2024-07-12 11:32:29
1065
原创 【Hudi】基础概念-数据写
(3)对于 update 消息,会直接找到对应 key 所在的最新 FileSlice 的 base 文件,并做 merge 后写新的 base file (新的 FileSlice)(3) 如果log file可索引,并且有写的FileSlice,尝试追加或写最新的log file;(3) 如果有小的base file文件,merge base file,生成新的FileSlice+base file,否则直接写新的 FileSlice + base file。根据最新记录的数据创建新的文件组。
2024-06-19 11:20:23
678
原创 【Hudi】核心概念-基本概念
(1)元数据:.hoodie目录对应着表元数据信息,包括表的版本管理(Timeline)、归档目录(存放过时的instant也就是版本),一个instant记录一次(commit)的行为、时间戳和状态,Hudi以时间轴的形式维护了在数据集上执行的所有操作的元数据;在COW表中,**只有数据文件/基本文件(.parquet),没有增量日志文件(.log.*).**对每一个新批次写入都将创建相应数据文件的新版本(新的FileSlice),新版本文件包包括旧版本文件的记录以及来自传入批次的记录(全量最新)。
2024-06-13 15:35:57
1267
原创 【Hudi】编译
通过网址下载:http://packages.confluent.io/archive/5.3/confluent-5.3.4-2.12.zip。(1)上传apache-maven-3.6.1-bin.tar.gz到/opt/software目录,并解压更名。修改了Hive版本为3.1.2,其携带的jetty是0.9.3,hudi本身用的0.9.4,存在依赖冲突。Hudi默认依赖的hadoop2,要兼容hadoop3,除了修改版本,还需要修改如下代码。(1)修改setting.xml,指定为阿里仓库地址。
2024-06-11 11:07:52
1255
原创 【Hudi】hudi概述
4、支持spark、presto、trino、hive、flink等引擎的SQL读写。替代部分kafka的场景,数据导出到在线服务器存储 (eg.es)更短的调度interval减少端到端延迟(小时–>分钟)==>5、自动管理小文件、数据聚簇,压缩,清理。8、向后兼容的方式实现表结构变更的支持。提供分钟级别时效性,支持更高效的查询。7、内置可扩展存储访问的元数据跟踪。2、支持增量拉取表变更以进行处理。3、支持事务提交及回滚,并发控制。6、流式摄入,内置CDC源和工具。Hudi作为lib,非常轻量。
2024-05-29 18:04:59
601
原创 【spark】SparkSQL
SparkSQL是Spark的一个模块,用于处理海量结构化数据相同点:1、分布式SQL计算引擎2、构建大规模结构化数据计算的绝佳利器,同时SparkSQL拥有更好的性能DataFrame是按照二维表格的形式存储数据RDD则是存储对象本身。
2024-01-19 15:00:17
1141
原创 【python】多任务编程
线程安全是指某个函数、函数库在多线程环境中被调用时,能够正确地处理多个线程之间的共享变量,使程序功能能正确完成由于线程的执行随时会发生切换,就造成了不可预料的结果,出现线程不安全。
2023-12-13 14:25:27
1076
原创 Pyspark中的滞后移位函数
在PySpark中,没有您预期的shift函数,并且您在使用lag时的方向是正确的。但是这里有一个小技巧,当你必须在lag_1的基础上进行lag_2等等。
2023-05-23 15:12:24
748
原创 【hive】order by、sort by、distribute by、cluster by的区别
hive order by 、sort by、distinct by、cluster by的区别
2023-03-20 18:09:09
1255
原创 数据仓库_01
数据仓库概述数据输入数据来源主要分为三个方面:爬虫数据、用户行为数据(可以通过埋点,在日志服务器上进行,最终通过flume将数据同步到数据仓库)、业务数据(通过sqoop将MySQL中的数据同步到hive)数据分析数据仓库将数据备份在ODS当中,DWD完成数据的清洗,DWS/DWT大多数聚合join数据,ADS为报表层数据输出报表系统:条形图、折线图、饼图用户画像系统:用户打标签(为推荐系统做铺垫)分为三个标签:统计类、规则类、机器学习类标签推荐系统机器学习:包括推荐系统需求分析
2022-05-27 15:08:18
194
原创 Zookeeper
第一章 Zookeeper入门1.1 概述Zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目。
2022-02-20 20:39:20
1085
原创 python中的map/reduce, set的用法
目录setreducemapsetset()函数创建一个无序不重复的元素集,可以进行关系测试,删除重复元素,还可以计算交集、差集、并集等。>>>x = set('runoob')>>> y = set('google')>>> x, y(set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l'])) # 重复的被删除>>> x & y #
2022-02-08 11:04:40
1424
原创 python安装
三个概念安装之前需要明白三个概念:解释器:编译器库管理工具python解析器是必须安装的python安装软件下载第一种安装方法python解析器的下载python下载地址找到适合自己电脑的版本进行下载即可:(一般下载含有executer的)python编译器的下载一般选择pycharmpycharm下载地址第二种安装方法anaconda的下载anaconda下载地址推荐使用第二种安装方式python的安装...
2022-02-07 22:57:43
1006
原创 数据仓库分层
数据分层的好处:清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能够更加方便的定位和理解减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算统一数据口径:通过数据分层,提供统一的数据出口,统一对外输出的数据口径复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题三层数据模型为了满足前面提到的数据分层带来的好处,我们将数据模型分为三层:数据运营层(ODS):存放接入的原始数据,是最接近数据源中数据的一层,数据源中的数据,经过.
2022-02-07 17:13:20
267
原创 【数据分析】lw
#!/usr/bin/env python# -*- coding:utf-8 -*-""" :Description: 记得些注释呀:Owner: xiaofeng_zhao:Create time: 2022/1/18"""import numpy as npimport pandas as pdfrom sklearn.preprocessing import LabelEncoderdf = pd.read_csv('./titanic/data.txt',
2022-01-30 15:51:23
1368
原创 【数据分析】Text2
第二章:数据清洗及特征处理#!/usr/bin/env python# -*- coding:utf-8 -*-""" :Description: 记得些注释呀:Owner: xiaofeng_zhao:Create time: 2022/1/29"""import pandas as pdimport numpy as nppd.set_option('display.max_columns',None)df = pd.read_csv(r'D:\python\pythonPro\
2022-01-30 15:11:14
1522
原创 【数据分析】Text1
# 1.1载入数据# 1.1.1 任务一:导入numpy和pandasimport numpy as npimport pandas as pdimport os# 1.1.2 任务二:载入数据#(1)使用相对路径# data = pd.read_csv('./titanic/test.csv')# (2)使用绝对路径# print os.getcwd() D:\python\pythonPro\DataWhale 获取当前的绝对路径data = pd.read_csv(r'D:
2022-01-11 10:03:07
381
原创 将json数据存入csv文件中
import jsonimport pandas as pimport sysreload(sys)sys.setdefaultencoding('utf8')# json数据要进习惯压缩之后才能够将数据转换为字典的形式with open("a.json",'r') as f: for line in f: a = json.loads(line) # print(type(a)) for k,v in a.items():
2021-10-15 11:26:46
1384
原创 数据可视化
目录一、matplotlib画图(一)、matplotlib相关知识点(二)、matplotlib画图入门(三)、管理图例(四)、管理坐标轴(五)、管理多个子图二、功能丰富的数据图(一)、饼图(二)、条形图(三)、水平柱状图一、matplotlib画图(一)、matplotlib相关知识点Figure: 代表整个图Axes:画布,可以理解为子图(一个图中可以包含多个子图)Axis轴:包含x轴和y轴Spines:连接轴刻度的标记线(bottom,top,left,right)Legend:图例
2021-10-15 10:01:37
271
原创 sqoop的简单使用案例
目录导入数据RDBMS到HDFS1)全部导入2)查询导入导入数据在sqoop中,”导入“概念指:在非大数据集群(RDBMS)向大数据集群(HDFS、HIVE、HBASE)中传入数据,叫做:导入,即使用import关键字。RDBMS到HDFS确定mysql服务开启正常在MySQL中新建一张表并插入一些数据CREATE DATABASE company;CREATE TABLE company.staff( id INT(4) PRIMARY KEY NOT NULL AUTO_I
2021-10-15 10:00:40
230
原创 pyspark udf
目录简单的注册UDF自己定义函数UDFpyspark udf 源码解析复杂数据类型:ArrayType、MapType、StructTypeArrayTypeMapTypeStructType简单的注册UDF直接用lambda表达式注册成UDFfrom pyspark.sql.types import *spark.udf.register('sex_distinct',lamnda x:'M' if x==u'男' else 'F'spark.sql("select sex_register('
2021-10-15 09:22:22
1442
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1