JRQZ
  • 关于
  • 碎片时间
  • 自用笔记

自用笔记

九月 14, 2024

Hive上手

参考:《Hive编程指南》第一版,Hive官方wiki,https://bbs.huaweicloud.com/blogs/197920 《Hive编程指南》第一版出版于2013年,此时hive2尚未发布,如今hive3已经普及,很多知识已经过时,这里仅为学习 Hive是一个开源的数据仓库框架,基于Hadoop生态系统,用于处理和分析大量的结构化和半结构化数据。 Hive提供了一个类似于SQL的查询语言,称为HiveQL(Hive Query Language),允许用户编写查询来分析存储在Hadoop分布式文件系统(HDFS)或其他兼容的存储系统(如Amazon S3)中的数据。HiveQL查询会被转换成一系列的MapReduce作业,然后在Hadoop集群上执行。Hive还支持其他执行引擎,如Apache Tez和Apache Spark。 Hive发行版中附带的模块有CLI,一个成为Hive网页界面(HWI)的简单网页界面,以及可通过JDBC、ODBC和一个Thrift服务器(参考第16章)进行编程访问的几个模块 所有的命令和查询都会进入到Driver(驱动模块),通过该模块对输入进行解析编译,对需求的计算进行优化,然后按照指定的步骤执行。当需要生成MR任务(job)时,Hive通过一个表示”job执行计划“的XML文件驱动执行内置的、原生的Mapper和Reducer模块。 Hive通过和JobTracker通信来初始化MR任务,而不必部署在JobTracker所在节点 Metastore是一个独立的关系型数据库,Hive会在其中保存表模式和其它系统源数据 单节点安装和使用HIVE 准备 java 1.8 hadoop 3.4.0 hive安装包https://dlcdn.apache.org/hive/,版本3.1.3 wget https://dlcdn.apache.org/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz tar -xzvf apache-hive-3.1.3-bin.tar.gz MySQL安装与配置 hive的使用metastore保存数据元信息,这里使用mysql 卸载机器自带mysql: yum remove mariadb mariadb-libs 安装: yum install TXSQL-client.x86_64 启动mysql: # 启动mysql sudo service mysql start # 测试登录,mysql5.7默认root用户初始密码为空 mysql -u root 此时有权限问题无法登录,进行如下步骤: # 停止mysql服务 sudo service mysql stop # 以安全模式启动MySQL sudo mysqld_safe --skip-grant-tables & # 登录mysql mysql -u root 修改root用户密码 update mysql.user set authentication_string=PASSWORD('newPwd'), plugin='mysql_native_password' where user='root'; flush privileges; 重启服务
继续阅读
九月 14, 2024

某业务数仓建模理论学习

数仓分层理论 ODS(Operational Data Store):操作数据存储是一个中间数据存储层,用于存储来自多个源系统的实时操作数据。ODS通常包含原始数据,用于支持实时查询和报告。它作为数据仓库的前身,提供了一个集中式的数据存储,以便将数据进一步转换、清洗和加载到数据仓库中。 DWD(Data Warehouse Detail):数据仓库详细层是数据仓库体系结构中的一个层次,用于存储经过清洗、转换和集成的详细数据。在这一层,数据通常以事实表和维度表的形式组织,以支持多维数据分析。DWD层的数据具有较高的数据质量和一致性,可以用于进一步的数据挖掘和报告。 DWM(Data Warehouse Mart):数据仓库集市层是数据仓库体系结构中的另一个层次,用于存储为特定业务领域或部门定制的数据子集。DWM层的数据通常是从DWD层中提取、汇总和转换而来的。数据仓库集市提供了更高层次的数据聚合,以支持特定业务需求的分析和报告。 DM(Data Mart):数据集市是针对特定业务领域或部门的小型数据仓库。数据集市通常包含有限的数据主题,以便更快速、更有效地支持特定业务需求的数据分析和报告。数据集市可以是独立的,也可以作为更大数据仓库体系结构的一部分。 某业务数仓分享 数仓建模:业务->领域->逻辑->物理 业务数仓实际设计过程分为七个步骤:梳理业务流程,划分主题,梳理指标,调研实体关系,梳理维度,数仓分层,构建数据仓库 梳理业务流程 找到谁,在什么环节,做什么关键动作,得到什么结果 在现有业务流程上找到数据节点 划分主题域 主题域是业务业务过程中一个个不可划分的行为事件 例如申购主题域中有预审购、申购、确认申购结果等业务流程 主题域划分要尽量涵盖所有业务需求 梳理指标体系 目标:统一语言,统一口径 分析实体关系 建模方法:从全业务的高度,用实体关系模型来描述业务 根据现有的实体关系图分析需要建设哪些dwd表 梳理维度 目标:构建一致性库表,避免维度概念散落在业务数仓各处 例如账户类型、入口类型、事件类型等维度 好处:有利于统一建设维表、方便后续维度建模 数仓分层 核心是逐层解耦 越到底层,越接近业务发生的记录 越到上层,越接近业务目标 ODS保存原始数据,生命周期默认永久 DWD基于之前的实体关系图建设,充分反映业务本身,而且是稳定的,这层是进入数仓的关键通道,需要对数据质量严格把关 DWM基于维度建模(如星型模式、雪花模式)的理论设计,能够有效提升数据的使用效率 DM层按照宽表模型进行设计,以空间换时间提升产品获取指标的效率 数仓物理建模 真正的代码开发阶段,有几个要点: 设计先行,现在腾讯文档上设计库表模型,优先评审,避免返工 根据评审的库表模型,在xdata平台上配置计算任务,配置任务依赖 任务名和表明最好一致 生命周期的管理,ODS尽可能保留所有历史数据,对于DWD/DWM/DM需要设置生命周期,存款侧实体类数据一般保存5年,用户行为类数据保存3年 如何提升数据质量: 关键:早发现,早恢复 添加校验任务&建立全链路数据视图 DWD表清洗 目的:高效、高质量的支撑业务的数据诉求,依赖方须向产品/业务团队提供dwd层以上的数据表,而非ods源数据 清洗要求: ods去重(重复数据造成上层数据处理复杂,数据倾斜),dwd配置数据唯一性质量告警 base64解码(Base64是一种用于将二进制数据编码为ASCII文本的方法,Base64编码使用64个字符(A-Z,a-z,0-9,+ 和 /)以及一个可选的填充字符(=)来表示二进制数据。它将二进制数据划分为每3个字节(24位)一组,然后将这24位数据分成4个6位的数据块。每个6位数据块对应一个Base64字符。如果二进制数据的长度不是3的倍数,那么在编码时会用填充字符(=)补齐) 加密敏感信息可在计算过程中解密,但不能解密落地 时间戳统一格式,如”yyyy-mm-dd hh:mm:ss“,默认值统一为”1970-01-01 08:00:00“ 属性/结构化字段必须对其模型展开,如果出现NULL值必须和产品沟通处理方式 总结:DWD表是屏蔽技术实现的用于业务分析的数仓表(如自增id、校验码、时间戳等纯技术语义字段不能进入dwd层) 要求: 配置告警(质量告警、失败/延迟告警) 完善数据字典(表描述、所属领域、责任人、设计文档、字段描述等元数据) 加入主干数仓
继续阅读
九月 14, 2024

Spark上手

安装Spark 官网下载,解压缩 配置环境变量JAVA_HOME,以及添加spark到系统路径 ~/.bashrc export SPARK_HOME=/data/download/spark-3.5.1-bin-hadoop3 export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin export JAVA_HOME=/usr/lib/jvm/TencentKona-8.0.17-402 export PATH=$PATH:$JAVA_HOME/bin spark-shell 启动sparkshell spark-shell 单词计数程序测试 var hFile = sc.textFile("hdfs://localhost:9000/user/wjrtest/input/capacity-scheduler.xml") val wc = hFile.flatMap(line => line.split(" ")).map(word => (word, 1)).reduceByKey(_ + _) wc.take(5) pyspark pyspark shell 运行pyspark pyspark 启动失败,出现segmentation fault 增加core文件的大小限制 ulimit -c unlimited 再次运行pyspark,触发Segmentation fault错误 使用gdb调试 gdb -c core (gdb) bt 结果如下: (base) [root@xxx-tencentos /data/download/spark-3.5.1-bin-hadoop3]# gdb -c core.17222 GNU gdb (GDB) Red Hat Enterprise Linux 7.6.1-120.tl2 Copyright (C) 2013 Free Software Foundation, Inc.
继续阅读
  • ««
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • »
  • »»
© JRQZ 2025