
大数据技术
文章平均质量分 60
宇文智
兵贵拙速
展开
-
平衡二叉搜索树-左右旋转原理
公式:K = left_height - right_height,平衡状态为 -1原创 2024-06-14 10:49:35 · 166 阅读 · 1 评论 -
db2 导出del文件,java代码转换字段分割符做数据清洗,上传hdfs ,完成del文件导入到hive
在DB2数据库中,在导出DEL文件时,默认的字符分隔符是"、字段分隔符是, (逗号)。在hive中字段分割符是以‘001’,特殊空白字符分割。如果将del导入db2,再用sqoop抽的话,就不用考虑文件中的分隔符问题。上传完后,在hive表发现错列了,原因是db2字字符串类型的字段值会存在(逗号),并且值会有双引号。这里写了一个java程序,对del文件做处理,将字段分隔符转化成‘\001’,并去除双引号。最后在idea里打包,上传到服务器,执行java -jar XXXX。对del文件进行清洗转化。原创 2023-01-11 15:05:12 · 1464 阅读 · 0 评论 -
scp(secure copy)安全拷贝和rsync远程同步的区别
(4)在hadoop102上,将hadoop102中/opt/module/jdk1.8.0_212目录拷贝到hadoop103上。rsync和scp区别:用rsync做文件的复制要比scp的速度快,rsync只对差异文件做更新。 把hadoop102机器上的/opt/software目录同步到hadoop103服务器的/opt/software目录下。(from server1 to server2)命令 选项参数 要拷贝的文件路径/名称 目的用户@主机:目的路径/名称。原创 2022-11-03 16:55:51 · 620 阅读 · 0 评论 -
ER模型与维度模型
例如:用户从下单到确认收货的平均时间间隔。该表粒度=采样周期:每天+维度:1,项目类型,2,审批类型,3,科室,4,项目,5, 子项目。2,维度:业务过程所发生的环境(日期、地区、人物身份/特征、产品等) n。确定度量值(由统计指标决定,例如:审批时效p85,总投入资源数)1,事实:通常对应业务过程(下单、付款、退单等) V。对应不同维度:日期、地区、人物身份/特征、产品。确定粒度:可由采样周期和维度描述。例如指标:主办业务/技术审批时效。注:相当于 T +1每日汇总层。2NE:不存在部分函数依赖。....原创 2022-08-29 11:06:51 · 871 阅读 · 0 评论 -
数据库报表:统计当前指标值比上月,比上季度,比年初,比去年同期增幅(同比)指标值,sql逻辑
数据库报表:统计当月指标值比上月,比上季度,比去年底,比去年同期增幅(同比,即上年同期上月底数据)指标值,sql逻辑数据表结构:RECORD_DT(日期)、BANK_NO (机构号)、ITEM_TP(统计类型)、CURR_CD(币种)、KPI(指标值)数据样例最后统计成的结果,每行结构为:RECORD_DT(日期)、BANK_NO (机构号)、ITEM_TP(统计类型)、CURR_CD(币种)、KPI(指标值)、LST_MTH_KPI、LST_QTR_KPI、YR_BEGIN_KPI、T_KPI综上所述,原创 2022-06-30 11:18:12 · 895 阅读 · 0 评论 -
大数据集群搭建概述
yarn历史服务器,查看mapreduce、spark任务、hive on spark任务hadoop103:8088/cluster点击yarn历史服务器的一个任务后的history 会调到spark 具体的执行日志。(自定义端口为4000)http://hadoop102:4000/hdfs对应位置为:hdfs://yang-HA/sparkLog_dirhive on spark 任务 执行失败后查看详细日志默认路径在:/tmp/atguigu/hive.log集群高可用..原创 2022-05-17 16:08:28 · 640 阅读 · 0 评论 -
大数据hive集群之间数据迁移
数据迁移总体大概流程为了数据的安全性。在源集群上创建中间表、在目标集群创建中间表以及目标表。这里中间表不用考虑分区表,用普通orc表即可。更改目标集群hdfs目录的权限,方便读写。将目标集群中的中间表清空。在目标集群上namnode为active 的节点上,使用关键命令hadoop distcp 、进行集群之间数据拷贝。拷贝到中间表。两边节点的namenode 都应该是active。目标环境下,针对目标表是否为分区表,判断是否使用动态分区将中间表数据写入目标表。及时清理中间临时表,比对 源、原创 2022-04-07 13:54:51 · 3648 阅读 · 0 评论 -
hive数据导出成csv文件shell脚本
#!/bin/bash tab_nm=$1etldt=`date -d $2 + "%Y%m%d"`dt=`date -d $2 + "%Y-%m-%d"`echo "${tab_nm}_${dt}"#数据存放目录data_hdfs_dir ="/tmp/idap/export_data/${tab_nm}"#数据导出路経local_path ="/gpfsetl/jcp_dw/script/idap/test/${tab_nm}_${dt}"#scp将数据传到目标服务器上scp_c.原创 2022-04-06 09:50:29 · 2546 阅读 · 3 评论 -
hive中复制(备份)一张表的两种方式
hive中复制(备份)一张表的两种方式第一种种方式虽然可以复制表字段、表数据 ,但是表属性会发生改变create table if not exists a_tableNMmas select * from b_tabNm第二种 建表语句会完全相同,再加载数据。create table if not exists a like binsert into a select * from b...原创 2022-03-23 10:12:59 · 8173 阅读 · 0 评论 -
Hive 不同版本中update更新操作 (merge into 有则更新,无则插入)
一、使用条件hive2.2.0及之后的版本支持使用merge into 语法,使用源表数据批量目标表的数据。使用该功能还需做如下配置1、参数配置set hive.support.concurrency = true;set hive.enforce.bucketing = true;set hive.exec.dynamic.partition.mode = nonstrict;set hive.txn.manager = org.apache.hadoop.hive.ql.lockmgr.Db原创 2022-03-23 09:49:14 · 11877 阅读 · 2 评论 -
大数据面试演讲稿 离线数仓实时分析
自我介绍 面试官好! 我叫xxx,2019年毕业于xxx。之前在上家公司主要负责离线数仓的部分,19年3月份进去实习,实习的时候,这家公司刚刚开始做大数据方面的业务。算是从零开始;大数据平台从搭建到稳定运行,我们花了半年左右的时间;后来领导看我表现不错,让我做离线数仓的项目。当时我们是结合阿里云整个数仓的建模模型建的这个数仓,同时增加了一个dwt这样一层,写需求的时候能更容易些。后来大半年都在做这个数仓项目,一直到现在这个项目还在,后来整体的架构搭建完成后,就交给了新来的实习生,让他们来接手。原创 2021-01-27 17:33:06 · 645 阅读 · 0 评论 -
大数据面试题
1. Linux 常用命令命令命令解释top查看内存ps -ef | grep 程序名查看进程df -h查看磁盘存储情况iotop查看磁盘IO读写iotop -o直接查看比较高的磁盘读写程序uptime查看系统运行时长和平均负载netstat -tunlp | grep 端口号查看端口占用情况2. Shell常用工具及写过的脚本awk:文本和数据的处理工具sed:流式文本编辑器cut: 连接文件并打印在输出设备上sort原创 2020-12-10 18:06:48 · 1906 阅读 · 0 评论 -
最大连续登录天数统计对应的用户数分布的三种实现方式(HQL+Spark Rdd)
需求:一个用户从第一次购买该剧开始,每天都购买或者未购买天数不超过1天,均视为连续追剧。未购买天数超过1天的均视为中断,需要重新统计连续追剧日期。请统计购买该剧超前点播的用户,最大的连续追剧天数,并按照最大连续追剧天数统计对应的用户数分布。举例:实现方式一:开窗取上一条记录的view_dt 做差,小于等于2 的为有效连续天数。大于2的中断,重新计算连续思想将同一个用户中多个连续时间段分开,使用sum(dateDiff > 2, 1, 0))开窗可实现为每个连续时间段标记的效果。sum(if原创 2020-11-25 19:29:04 · 1113 阅读 · 1 评论 -
使用SparkSQL 和 Hive API 代码实现用户自定义函数UDF UDAF UDTF
UDAF例:SparkSQL 中继承Aggregator自定义UDAF函数:输入多行,返回一行 => 聚合函数 。 (Scala代码实现)import org.apache.spark.SparkConfimport org.apache.spark.sql.expressions.Aggregatorimport org.apache.spark.sql.{DataFrame, Encoder, Encoders, SparkSession, functions}//输入多行,返回原创 2020-11-01 17:05:28 · 1350 阅读 · 0 评论 -
hive on spark : 使用load data 命令将hdfs上数据覆写到hive表中报错:could not be cleaned up解决方法
问题出现: 在执行sh脚本时,执行loaddatainpath'/origin_data/$APP/db/order_info/$do_date'OVERWRITEintotable${APP}.ods_order_infopartition(dt='$do_date');报错:Loading data to table gmall.ods_order_detail partition (dt=2020-06-23)FAILED: Execution Error, r...原创 2020-10-20 23:38:52 · 4830 阅读 · 4 评论 -
SparkCore项目之用户行为数据分析经验总结
数据格式样例类//用户访问动作表case class UserVisitAction(date: String,//用户点击行为的日期 user_id: Long,//用户的ID session_id: String,//Session的ID page_id: Long,//某个页面的ID原创 2020-09-28 21:17:05 · 671 阅读 · 0 评论 -
大数据技术之Flume知识点总结
第1章 Flume概述1.1 Flume定义 Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单。Flume最主要的作用是实时读取服务器本地磁盘上的数据,将数据写入HDFS上。1.2 Flume基础架构Flume组成架构如下图所示:1.2.1 Agent Agent是一个JVM进程,它以事件的形式将数据从源头送至目的。 Agent主要有3个部分组成,Source、Channel、Sink。1.2.2原创 2020-09-20 17:55:49 · 347 阅读 · 0 评论 -
Scala语言实现WordCount案例以及几个高级函数的使用总结
Scala语言实现WordCount案例以及几个高级函数的使用总结实现案例前需要熟悉scala中集合的几个高级函数:映射:**集合.map() ** 即拿到集合中元素做某些处理,返回当前集合的类型。扁平化:**集合.flatten() **就是提取外层集合中的内层集合中的元素,打散放入到外层集合中。映射和扁平化可以写成一个函数:集合.flatMap()。分组:**集合.groupBy()**函数:根据集合中元素的某个特征进行分组,返回值类型:Map(any -> List[any])排序原创 2020-09-20 17:25:16 · 782 阅读 · 0 评论 -
HQL:统计影音视频网站的常规指标,各种TopN指标
统计影音视频网站的常规指标,各种TopN指标:– 统计视频观看数Top10– 统计视频类别热度Top10(类别热度:类别下的总视频数)– 统计出视频观看数最高的20个视频的所属类别以及类别包含Top20视频的个数– 统计视频观看数Top50所关联视频的所属类别Rank– 统计每个类别中的视频热度Top10,以Music为例(视频热度:视频观看数)– 统计每个类别视频观看数Top10– 统计上传视频最多的用户Top10以及他们上传的视频观看次数在前20的视频需要准备的表创建外部数据表:m原创 2020-08-23 12:58:49 · 1663 阅读 · 0 评论 -
阿里面试题—蚂蚁森林HQL
---------------------需求------------------1.蚂蚁森林植物申领统计问题:假设2017年1月1日开始记录低碳数据(user_low_carbon),假设2017年10月1日之前满足申领条件的用户都申领了一颗p004-胡杨,剩余的能量全部用来领取“p002-沙柳” 。统计在10月1日累计申领“p002-沙柳” 排名前10的用户信息;以及他比后一名多领了几颗沙柳。得到的统计结果如下表样式:user_id plant_count less_count(比后一名多原创 2020-08-23 12:56:59 · 898 阅读 · 0 评论 -
hive窗口函数的案例
--(1)查询在2017年4月份购买过的顾客及总人数SELECT name ,count(*) over() --如果不写order by和窗口从句:默认就是rows between unbounded preceding and unbounded following。这里要统计总人数,所以不能分区,就对group by 分组之后的数据,进行总体统计即可。FROM businesswhere subString(orderdate ,1,7) = '2017-04'GROUP by name;原创 2020-08-19 19:21:46 · 262 阅读 · 0 评论 -
HQL中常用的函数总结
常用日期函数unix_timestamp:返回当前或指定时间的时间戳 select unix_timestamp(); select unix_timestamp('2008-08-08 08:08:08'); from_unixtime:将时间戳转为日期格式 select from_unixtime(1218182888);current_date:当前日期 select current_date();curren原创 2020-08-19 18:59:02 · 1308 阅读 · 0 评论 -
Hive3.1学习笔记汇总
一、Hive基本概念1.1 hive是什么hive是基于hadoop的一个数仓分析工具,hive可以将hdfs上存储的结构化的数据,映射成一张表,然后让用户写HQL(类SQL)来分析数据 tel up down1383838438 1345 15671383838439 5345 15671383838440 1241 165771383838441原创 2020-08-18 14:13:50 · 777 阅读 · 0 评论 -
Hadoop中MapReduce的多方面优化方法
最好的优化是硬件的优化,升级机器配置技术方面优化:从数据输入考虑:①写一个mr程序跑这些小文件,不对数据进行处理,合并小文件。②使用combineTextInputFormat对小文件进行合并在Map阶段:①调整溢写的参数值,增大触发溢写的内存上限,减少溢写次数。从而减少磁盘IO②减少合并次数:可以通过设置参数,增大Merge的文件数目③在不影响业务逻辑的前提下,进行combiner,减少I/OReduce阶段:①合理设置Map和reduce数②设置Map,Reduce共存③合理设置原创 2020-08-15 10:49:33 · 2271 阅读 · 0 评论 -
MapReduce性能优化常用的调优参数
1)资源相关参数(1)以下参数是在用户自己的MR应用程序中配置就可以生效(mapred-default.xml)配置参数参数说明mapreduce.map.memory.mb一个MapTask可使用的资源上限(单位:MB),默认为1024。如果MapTask实际使用的资源量超过该值,则会被强制杀死。mapreduce.reduce.memory.mb一个ReduceTask可使用的资源上限(单位:MB),默认为1024。如果ReduceTask实际使用的资源量超过该值,则会原创 2020-08-14 18:17:25 · 217 阅读 · 0 评论 -
MapReduce程序案例 MapJoin与ReduceJoin
MapJoin案例应用1)使用场景Map Join适用于一张表十分小、一张表很大的场景。2)优点思考:在Reduce端处理过多的表,非常容易产生数据倾斜。怎么办?在Map端缓存多张表,提前处理业务逻辑,这样增加Map端业务,减少Reduce端数据的压力,尽可能的减少数据倾斜。3)具体办法:采用DistributedCache (1)在Mapper的setup阶段,将文件读取到缓存集合中。 (2)在Driver驱动类中加载缓存。//缓存普通文件到Task运行节点。job.addCac原创 2020-08-12 21:00:48 · 201 阅读 · 0 评论 -
MapTask,ReduceTask工作机制(包括shuffle阶段),OutCollector中Partitioner源码分析
MapReduce大致流程:inputformat -> Mapper -> Shuffle(各种排序,分区排序,归并排序) -> Reducer -> outputformatshuffle过程位于Mapper阶段之前,Reducer阶段之后。MapTask的工作机制(包括shuffle过程,包括ReduceTask): 【MapTask通过InputFormat获得的RecordReader,输出keyValue,再交给mapper中用户定义的Map()方法中处理,当原创 2020-08-12 10:57:20 · 430 阅读 · 0 评论 -
MR程序案例 找出文件中提取需要的内容,并把文件输出成两个结果文件
public class LogDriver { public static void main(String[] args) throws IOException, ClassNotFoundException, InterruptedException { Configuration configuration = new Configuration(); Job job = Job.getInstance(configuration); job原创 2020-08-11 18:52:19 · 234 阅读 · 0 评论 -
MR程序案例 手机流量统计
//需求分析:对上一个MR程序生成的文件再处理:按照总流量进行倒序输出。//MapReduce(shuffle阶段)只能按照key进行排序,//那么Mapper输出的时候应该以FlowBean对象(实现了WritableComparable --> 变成了可持久化与可比较)为key,然后让shuffle去排序。最后在Reduce阶段,只需将key / vlaue调换即可。FlowCountDriver类: MR程序的入口:public class FlowCountDriver {原创 2020-08-11 17:04:20 · 434 阅读 · 0 评论 -
MapReduce中Job提交流程源码和切片源码小结
MapReduce定义 MapReduce是一个分布式运算程序的编程框架,是用户开发“基于Hadoop的数据分析应用”的核心框架。 MapReduce核心功能是将用户编写的业务逻辑代码和自带默认组件整合成一个完整的分布式运算程序,并发运行在一个Hadoop集群上。MapReduce的核心思想首先MapReduce分成两个阶段:Map阶段和Reduce阶段。在Map阶段,会并发的执行MapTask。在Reduce阶段,会有并发的ReduceTask。ReduceTask依赖于MapTask并发输原创 2020-08-10 19:34:45 · 210 阅读 · 0 评论 -
NN,2NN以及DN的工作机制
NameNode和SecondaryNameNode的工作机制 首先NameNode中有两个文件:一个是Fsimage:是NameNode内存中元数据序列化后形成的文件。还有一个是Edits:编辑日志,这个日志负责记录客户端更新元数据的每一步操作。 然后当NameNode启动时,会滚动Edits编辑日志,生成一个空的Edits.inpress文件。然后将Edits和fsImage加载到内存中进行合并。从而保证元数据是最新的。然后客户端会对元数据进行增删改的操作,这些操作都会被记录到edits_inp原创 2020-08-08 21:41:40 · 785 阅读 · 0 评论 -
HDFS读写数据流程小结
HDFS的写数据流程客户端通过distributed FileSystem 模块,向NameNode请求上传文件。然后NameNode响应客户端可以上传。然后客户端请求第一个block上传到那几个DataNode服务器(假如)NameNode返回三个DataNode节点,分别是dn1,dn2,dn3。客户端通过FSDataOutputStrem模块请求向dn1上传数据,dn1收到请求后回调用dn2,dn2又会调用dn3,这样通信管道就会建立。然后 dn1,dn2 ,dn3逐级应答客户端。客户原创 2020-08-08 19:45:33 · 263 阅读 · 0 评论