- 博客(48)
- 资源 (2)
- 收藏
- 关注
原创 hive分隔符引发的坑
hive分隔符引发的坑 这两天在做公司 BPM 系统数据分析的工作,前期需要将 BPM 系统的数据导入到 HDFS 上,BPM 系统数据存储在 SQL Server 上,导入数据工具选择 Sqoop ,按照 Sqoop 操作惯例,需要先下载相应的驱动 jar 包,这里是网上下载的 mssql-jdbc-7.4.1.jre8.jar(图示上为 sql server 的驱动 jar 包,下为 mysql 的驱动 jar 包); 然后将下好的 jar 包上传到 Sqoop 的 lib 目录下;
2021-04-07 15:18:25
732
原创 hive关键字引发的坑
/opt/module/hive/bin/hive -e "set mapreduce.job.queuename=hive;``set hive.exec.dynamic.partition.mode=nonstrict;``SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;``insert overwrite table gmall.dwd_agv_breakdown_record partition (dt='2
2021-03-22 17:27:28
2256
原创 RDD的Transformation(转换算子)
RDD的Transformation(转换算子)RDD整体上分为Value类型、双Value类型和Key-Value类型1 value类型创建包名:com.xiao_after.value1.1 map()映射1)函数签名:def map[U: ClassTag](f: T => U): RDD[U] 2)功能说明:参数 f 是一个函数,它可以接收一个参数。当某个RDD执行map方法时,会遍历该RDD中的每一个数据项,并依次应用 f 函数,从而产生一个新的RDD。即,这个新的RDD
2020-09-27 19:52:23
500
原创 RDD的创建与分区
RDD的创建与分区1.RDD的创建在Spark中创建RDD的创建方式可以分为三种:从集合中创建RDD、从外部存储创建RDD、从其他RDD创建。a)新建一个 maven 工程 SparkCoreTestb)添加 scala 框架支持c)创建一个scala文件夹,并把它修改为Source Rootd)在pom文件中添加:<dependencies> <dependency> <groupId>org.apache.spark</g
2020-09-24 21:03:04
494
原创 消除 idea 中 spark 代码的 info 信息
消除 idea 中 spark 代码的 info 信息我们在 idea 中写 spark 代码时, 会产生很多的 info 信息严重影响我们查看程序的运行结果。如下方法可以将控制台上的 info 信息消除。①先下载下面链接里面的 log4j.properties 文件:链接:https://pan.baidu.com/s/1cE_5IOehLh3Fxlc7dER_rQ提取码:rinw②将 log4j.properties 拖入到 maven模块 SparkCoreTest 下的 src/mai
2020-09-23 23:31:55
1083
2
原创 在 idea 上运行 scala 程序报错ERROR Shell Failed to locate the winutils binary in the hadoop binary path
在 idea 上运行 scala 程序报错问题解决:本文解决的 error 信息如下:200922 181933 INFO SparkContext Running Spark version 3.0.0200922 181933 ERROR Shell Failed to locate the winutils binary in the hadoop binary pathjava.io.IOException Could not locate executable nullbinwinutil
2020-09-22 19:01:19
470
原创 Spark入门
Spark入门问1:Hadoop与Spark区别?答:Hadoop主要解决海量数据的存储和海量数据的分析计算;Spark是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。问2:Spark的资源调度框架?答:Hadoop 的 Yarn 框架比 Spark 框架诞生的晚,所以 Spark 自己也设计了一套资源调度框架。问3:Hadoop与Spark框架对比?答:Hadoop MR框架:从数据源获取数据,经过分析计算,将结果输出到指定位置。核心是一次计算,不适合迭代运算。Spark框架
2020-09-21 20:44:17
126
原创 每日SQL-01
每日SQL部门工资最高的员工需求一:编写一个 SQL 查询,找出每个部门工资最高的员工。例如,根据上述给定的表格,Max 在 IT 部门有最高工资,Henry 在 Sales 部门有最高工资。展示效果:DepartmentEmployeeSalaryITJim90000ITMax90000SalesHenry80000–建表Create table If Not Exists 8_Employee (Id int, Name varchar(2
2020-09-18 19:23:16
153
原创 Hadoop 初相识
1 Hadoop的优势:1)高可靠性:hadoop底层维护着多个数据副本,所以即使Hadoop某个计算元素或存储出现故障,也不会导致数据的丢失。2)高扩展性:在集群间分配任务数据,可方便的扩展数以千计的节点。3)高效性:在MapReduce 的思想下,Hadoop是并行工作的,以加快任务处理速度。4)高容错性:能够自动将失败的任务重新分配。2 Hadoop的组成Hadoop 1.x的组成:1)MapReduce(计算 + 资源调度)2)HDFS(数据存储)3)Common(辅助工具)H
2020-09-03 22:41:41
144
原创 shell 之 正则表达式入门
正则表达式入门 正则表达式使用单个字符串来描述、匹配一系列符合某个语法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、替换那些符合某个模式的文本。在Linux中,grep,sed,awk等命令都支持通过正则表达式进行模式匹配。1 常规匹配一串不包含特殊字符的正则表达式匹配它自己,例如:[xiao@hadoop105 ~]$ cat /etc/passwd | grep xiaoxiao:x:1001:1001::/home/xiao:/bin/bash就会匹配所有包含 xia
2020-09-03 15:51:45
144
原创 shell 常见操作 之shell工具
shell工具1 cut cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut 命令从文件的每一行剪切字节、字符和字段并将这些字节、字符和字段输出。1)基本用法 cut [选项参数] filename 说明:默认分隔符是制表符2)选项参数说明选项参数功能-f列号,提取第几列-d分隔符,按照指定分隔符分割列,默认是制表符“\t”-c指定具体的字符3)案例实操(1)数据准备[xiao@hadoop105 datas]$ to
2020-09-02 21:29:56
142
原创 shell 常见操作之 read 与 函数
shell 常见操作1 read读取控制台输入1)基本语法read (选项) (参数)选项:-p:指定读取值时的提示符;-t:指定读取值时等待的时间(秒)。参数 变量:指定读取值的变量名2)案例实操提示7秒内,读取控制台输入的名称[xiao @hadoop105 datas]$ touch read.sh[xiao @hadoop105 datas]$ vim read.sh#!/bin/bashread -t 7 -p "Enter your name
2020-09-02 19:58:53
339
原创 项目经验之基准测试
项目经验之基准测试1) 测试HDFS写性能 测试内容:向HDFS集群写14个128M的文件[xiao @hadoop102 mapreduce]$ hadoop jar /opt/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-3.1.3-tests.jar TestDFSIO -write -nrFiles 14 -fileSize 128MB2020-09-02 19:0
2020-09-02 19:16:21
324
原创 shell常见操作之条件判断与流程控制
shell之条件判断1)基本语法(1)test condition(2)[ condition ](注意condition前后要有空格)注意:条件非空即为true,[ atguigu ]返回true,[ ] 返回false。2)常用判断条件(1)两个整数之间比较-eq 等于(equal) -ne 不等于(not equal)-lt 小于(less than) -le 小于等于(less equal)
2020-09-01 20:50:47
162
原创 Kafka 之 监控 Eagle
Kafka 监控之 Eagle1)修改kafka启动命令修改kafka-server-start.sh命令中if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then export KAFKA_HEAP_OPTS="-Xmx1G -Xms1G"fi为if [ "x$KAFKA_HEAP_OPTS" = "x" ]; then export KAFKA_HEAP_OPTS="-server -Xms2G -Xmx2G -XX:PermSize=128m -XX
2020-08-29 21:55:21
454
原创 Flume 之 对接 Kafka
Flume 之 对接 Kafka数据分离0)需求: 将flume采集的数据按照不同的类型输入到不同的topic中 将日志数据中带有 xiao 的,输入到Kafka的 xiao主题中, 将日志数据中带有 big 的,输入到Kafka的 big 主题中, 其他的数据输入到Kafka的 other 主题中1)先导入 flume 的依赖 <dependency> <groupId>
2020-08-29 20:46:15
191
原创 Kafka之自定义 interceptor
Kafka之自定义 interceptor1)需求:实现一个简单的双interceptor组成的拦截链。第一个interceptor会在消息发送前将时间戳信息加到消息value的最前部;第二个interceptor会在消息发送后更新成功发送消息数或失败发送消息数2)案例实操(1)增加时间戳拦截器package com.xiaoxiao.kafka.interceptor;import org.apache.kafka.clients.producer.ProducerInterceptor;
2020-08-29 16:11:16
138
原创 Kafka 之 offset 手动提交
Kafka之手动提交 offset虽然自动提交offset十分简介便利,但由于其是基于时间提交的,开发人员难以把握offset提交的时机。因此Kafka还提供了手动提交offset的API。手动提交offset的方法有两种:分别是commitSync(同步提交)和commitAsync(异步提交)。两者的相同点是,都会将本次poll的一批数据最高的偏移量提交;不同点是,commitSync阻塞当前线程,一直到提交成功,并且会自动失败重试(由不可控因素导致,也会出现提交失败);而commitAsy
2020-08-28 23:51:34
2696
原创 Kafka 之 offset 自动提交
Kafka 之 offset 自动提交1)编写代码需要用到的类:KafkaConsumer:需要创建一个消费者对象,用来消费数据ConsumerConfig:获取所需的一系列配置参数ConsuemrRecord:每条数据都要封装成一个ConsumerRecord对象 为了使我们能够专注于自己的业务逻辑,Kafka提供了自动提交offset的功能。 自动提交offset的相关参数:enable.auto.commit:是否开启自动提交offset功能auto.commit.interva
2020-08-28 20:58:39
2076
1
原创 Kafka 之 Producer API
Kafka 之 Producer API1.1 消息发送流程 Kafka的Producer发送消息采用的是异步发送的方式。在消息发送的过程中,涉及到了两个线程——main线程和Sender线程,以及一个线程共享变量——RecordAccumulator。main线程将消息发送给RecordAccumulator,Sender线程不断从RecordAccumulator中拉取消息发送到Kafkabroker。相关参数:batch.size:只有数据积累到batch.size之后,sender
2020-08-28 19:19:10
256
原创 Flume之自定义Sink
Flume之自定义Sink1)介绍 Sink不断地轮询Channel中的事件且批量地移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个Flume Agent。 Sink是完全事务性的。在从Channel批量删除数据之前,每个Sink用Channel启动一个事务。批量事件一旦成功写出到存储系统或下一个Flume Agent,Sink就利用Channel提交事务。事务一旦被提交,该Channel从自己的内部缓冲区删除事件。 Sink组件目的地包括hdfs、logger、avr
2020-08-27 19:07:32
235
原创 Flume之自定义Source
Flume之自定义Source1)介绍 Source是负责接收数据到Flume Agent的组件。Source组件可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy。官方提供的source类型已经很多,但是有时候并不能满足实际开发当中的需求,此时我们就需要根据实际需求自定义某些source。 官方也提供了自定义source的接口:
2020-08-27 18:47:18
265
原创 Flume之自定义Interceptor
Flume之自定义Interceptor1.自定义Interceptor1)案例需求 使用Flume采集服务器本地日志,需要按照日志类型的不同,将不同种类的日志发往不同的分析系统。2)需求分析 在实际的开发中,一台服务器产生的日志类型可能有很多种,不同类型的日志可能需要发送到不同的分析系统。此时会用到Flume拓扑结构中的Multiplexing结构,Multiplexing的原理是,根据event中Header的某个key的值,将不同的event发送到不同的Channel中,所以我们需
2020-08-27 11:44:17
328
原创 史上最详细 Kafka 命令行操作
史上最详细 Kafka 命令行操作先启动 zookeeper[xiao @hadoop102 ~]$ zk.sh start===================== hadoop102 =======================ZooKeeper JMX enabled by defaultUsing config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfgStarting zookeeper ... STARTED=======
2020-08-26 19:44:37
2000
原创 Flume之实时监控目录下的多个追加文件
1.实时监控目录下的多个追加文件 Exec source适用于监控一个实时追加的文件,不能实现断点续传;Spooldir Source适合用于同步新文件,但不适合对实时追加日志的文件进行监听并同步;而Taildir Source适合用于监听多个实时追加的文件,并且能够实现断点续传。1)案例需求:使用Flume监听整个目录的实时追加文件,并上传至HDFS2)需求分析:(1)创建符合条件的flume配置文件(2)执行配置文件,开启监控(3)向监控文件追加内容 echo 1111 >&
2020-08-24 19:50:10
830
原创 蚂蚁森林练习之低碳用户排名分析
蚂蚁森林练习之低碳用户排名分析 问题:查询user_low_carbon表中每日流水记录,条件为:用户在2017年,连续三天(或以上)的天数里,每天减少碳排放(low_carbon)都超过100g的用户低碳流水。需要查询返回满足以上条件的user_low_carbon表中的记录流水。例如用户u_002符合条件的记录如下,因为2017/1/2~2017/1/5连续四天的碳排放量之和都大于等于100g:user_iddata_dtlow_carbonu_0022017/1/
2020-08-23 23:12:48
667
原创 蚂蚁森林练习之植物申领统计
蚂蚁森林练习之植物申领统计 问题:假设2017年1月1日开始记录低碳数据(user_low_carbon),假设2017年10月1日之前满足申领条件的用户都申领了一颗p004-胡杨,剩余的能量全部用来领取“p002-沙柳” 。统计在10月1日累计申领“p002-沙柳” 排名前10的用户信息;以及他比后一名多领了几颗沙柳。得到的统计结果如下表样式:user_idplant_countless_countu_1011000100u_102900400u_10
2020-08-23 23:10:03
672
原创 温度转换程序
温度转换程序python书写#TempConvert.pyTempStr = input("请输入带有符号的温度值:")if TempStr[-1] in ['F','f']: C = (eval(TempStr[0:-1]) -32 )/1.8 print("转换后的温度是{:.2f}C".format(C))elif TempStr[-1] in ['C','c']: F = 1.8*eval(TempStr[0:-1]) + 32 print("转换后的温度是
2020-08-22 18:28:33
811
原创 Hive查询之自定义函数
Hive查询之自定义函数1 自定义函数流程1)Hive 自带了一些函数,比如:max/min等,但是数量有限,自己可以通过自定义UDF来方便的扩展。2)当Hive提供的内置函数无法满足你的业务处理需要时,此时就可以考虑使用用户自定义函数(UDF:user-defined function)。3)根据用户自定义函数类别分为以下三种:(1)UDF(User-Defined-Function) 一进一出(2)UDAF(User-Defined Aggregation Funct
2020-08-21 21:03:14
1064
原创 Hive查询之系统内置函数
Hive之系统内置函数1 系统内置函数1)查看系统自带的函数hive (default)> desc function upper; show functions;Time taken: 0.025 seconds, Fetched: 289 row(s)2)显示自带的函数的用法hive (default)> desc function upper;OKtab_nameupper(str) - Returns str with all characters changed
2020-08-21 18:04:17
1088
原创 Hive查询系列之分区表与分桶表
Hive查询之分区表与分桶表1 分区表 分区表实际上就是对应一个HDFS文件系统上的独立的文件夹,该文件夹下是该分区所有的数据文件。Hive中的分区就是分目录,把一个大的数据集根据业务需要分割成小的数据集。在查询时通过WHERE子句中的表达式选择查询所需要的指定的分区,这样的查询效率会提高很多。1.1 分区表基本操作1)引入分区表(需要根据日期对日志进行管理,通过部门信息模拟)dept_20200401.logdept_20200402.logdept_20200403.log2)
2020-08-21 16:33:19
1019
原创 Hive查询系列之初相识
Hive查询系列之初相识1 基本查询(select……from)1.1 全表和特定列查询0)数据准备(0)原始数据dept:10 ACCOUNTING 170020 RESEARCH 180030 SALES 190040 OPERATIONS 1700emp:7369 SMITH CLERK 7902 1980-12-17 800.00 207499 ALLEN SALESMAN 7698 1981-2-20 1600.00 300.00 307521 WARD SALESM
2020-08-20 21:17:48
1071
原创 Hive之DML数据操作
Hive之DML数据操作1 数据导入1.1 向表中装载数据(Load)1)语法hive (default)> load data [local] inpath '数据的path' [overwrite] into table student [partition (partcol1=val1,…)];(1)load data:表示加载数据(2)local:表示从本地加载数据到hive表;否则从HDFS加载数据到hive表(3)inpath:表示加载数据的路径(4)overwrite:
2020-08-20 19:28:01
152
原创 Hive之DDL数据
Hive之DDL数据1.1 创建数据库CREATE DATABASE [IF NOT EXISTS] database_name[COMMENT database_comment][LOCATION hdfs_path][WITH DBPROPERTIES (property_name=property_value, ...)];1)创建一个数据库,数据库在HDFS上的默认存储路径是/user/hive/warehouse/*.db。hive (default)> create dat
2020-08-20 10:09:42
167
原创 Hive数据类型
1 基本数据类型HIVEMySQLJAVA长度例子TINYINTTINYINTbyte1byte有符号整数2SMALINTSMALINTshort2byte有符号整数20INTINTint4byte有符号整数20BIGINTBIGINTlong8byte有符号整数20BOOLEAN无boolean布尔类型,true或者falseTRUE FALSEFLOATFLOATfloat单精度浮点数3.1415
2020-08-19 18:54:59
123
原创 Hive基本操作
1.Hive安装1)Hive官网地址http://hive.apache.org/2)文档查看地址https://cwiki.apache.org/confluence/display/Hive/GettingStarted3)下载地址http://archive.apache.org/dist/hive/4)github地址https://github.com/apache/hive2.MySql安装1)检查当前系统是否安装过Mysql[xiao @hadoop102 ~]$ rpm
2020-08-19 18:36:17
401
原创 Hadoop数据压缩
Hadoop数据压缩1 概述压缩概述: 压缩技术能够有效减少底层存储系统(HDFS)读写字节数。压缩提高了网络宽带和磁盘空间的效率。在运行MR程序时,I/O操作、网络数据传输、Shuffle 和 Merge 要花大量的时间,尤其是数据规模很大和工作负载密集的情况下,因此,使用数据压缩显得非常重要。 鉴于磁盘I/O和网络宽带时Hadoop的宝贵资源,数据压缩对于节省资源、最小化磁盘I/O和网络传输非常有帮助。可以在任意MapReduce阶段启用压缩。不过,尽管压缩和解压操作的CPU开销不高
2020-08-18 23:32:03
130
原创 Hadoop企业优化
1.MapReduce跑得慢的原因 MapReduce程序效率的瓶颈在于两点: (1)计算机性能:CPU,内存,磁盘健康,网络 (2)I/O操作优化: ①数据倾斜;②Map和Reduce数设置不合理;③Map运行时间太长,导致Reduce等待过久;④小文件过多;⑤大量的不可切片的超大压缩文件;⑥Split次数过多;⑦Merge次数过多等。2.MapReduce优化方法 MapReduce优化方法主要从六个方面考虑:数据输入、Map阶段、Reduce阶段、IO传输、数据倾斜
2020-08-18 19:42:32
102
原创 zookeeper启动故障
前两天配置完zookeeper之后,启动时遇见了故障,查了查网上帖子,然后跟着做了,故障已经成功排除。[xiao@hadoop102 zookeeper-3.5.7]$ bin/zkServer.sh startZooKeeper JMX enabled by defaultUsing config: /opt/module/zookeeper-3.5.7/bin/../conf/zoo.cfgStarting zookeeper ... STARTED//显示STARTED,但是下面的jp
2020-08-17 19:13:33
751
原创 HDFS的数据流
HDFS的数据流1.HDFS 写数据流程1.1 刨析文件写入 (1)客户端通过Distributed FileSystem模块向NameNode请求上传文件,NameNode检查目标文件是否已存在,父目录是否存在。 (2)NameNode返回是否可以上传。 (3)客户端请求第一个 Block上传到哪几个DataNode服务器上。 (4)NameNode返回3个DataNode节点,分别为dn1、dn2、dn3。 (5)客户端通过FSDataOutputStream模块请求dn1上传
2020-08-17 18:34:52
155
user_low_carbon.txt
2020-08-22
plant_carbon.txt
2020-08-22
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人