- 博客(82)
- 资源 (2)
- 收藏
- 关注
原创 hive 自定义函数UDF
hive 自定义函数UDF1. 内置函数查看内置函数: show functions;显示内置函数的详细信息: desc funcation sum;显示函数的扩展信息: desc funcation extended sum;2. 自定义函数UDF当hive提供的内置函数无法满足业务处理需求时,此时就可以考虑使用用户自定义函数。UDF(user-defined functi...
2019-04-25 16:35:26 1433
原创 Linux常用命令
Linux常用命令1. ls命令就是list的缩写,通过ls命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限ls -a 列出所有文件,包含以“ . ”开始的隐藏文件ls -r 反序排列ls -S 以文件大小排列ls -t 以文件修改时间排列ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来eg: ls -l *.sh 列出所有以.s...
2019-04-19 11:15:25 470
原创 安装github项目的jar包到自己的maven仓库中
安装github项目的jar包到自己的maven仓库中1. 概述在实际开发中,我们可能使用到github已有的开源项目,在使用maven的时候,在maven仓库中找不到这个github项目的maven,这个时候我们需要将GitHub源码打成jar包,安装到自己的maven仓库中。2.例子根据IP地址查找城市名称,使用GitHub项目:https://github.com/wzhe06/ip...
2019-04-14 11:00:30 2933
原创 Azkaban概述详解
Azkaban概述详解本文简单介绍一下Azkaban及其特点。azkaban是一个开源的任务调度系统,用于负责任务的调度运行(如数据仓库调度),用以替代linux中的crontab。一、Azkaban是什么?1.1 Azkaban是什么?Azkaban是一套简单的任务调度服务,整体包括三部分webserver、dbserver、executorserver。Azkaban是linkin...
2019-04-11 21:28:43 2893
原创 java 1.8 HashMap的实现原理
java 1.8 HashMap的实现原理1. hash 表数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),当然,对于有序数组,则可采用二分查找,插值查找查找等方式,可将查找复杂度提高为O(logn);对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n)...
2019-03-12 15:57:29 1044
原创 无法导入 import spark.implicits._ 报错
无法导入 import spark.implicits._ 报错##import spark.implicits._ 中的spark 指的是SQLContext或者SparkSessioneg1:def main(args: Array[String]): Unit = { val spark = SparkSession.builder() ...
2019-03-07 11:12:18 4586 1
原创 快速排序
快速排序1. 快速排序思想int [] arr = {8,2,9,10,1,5,14,9};left = 0right = arr.length -1首先在这个序列中随便找一个数作为基准数,为了方便,就让第一个数8作为基准数.base = arr[left]两端开始“探测”right先从右往左找一个小于base的数,==》从右往左找一个小于base的数:停止在5的位置再left从...
2019-02-18 15:16:33 165
原创 选择排序
选择排序1. 选择排序的思想每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。就如斗地主发牌后,将最大的牌或者最小的牌放到左边或者右边。2. 编码 package com.zhmcode.selectionsort; /** * Created by zhmcode on 2019/2/16 0016. */ public class ...
2019-02-16 15:00:29 200
原创 冒泡排序
冒泡排序1.冒泡排序思想让数组当中相邻的两个数进行比较,数组当中比较小的数值向下沉,数值比较大的向上浮!外层for循环控制循环次数,内层for循环控制相邻的两个元素进行比较。2. 编码package com.zhmcode.bubblesort;/** * Created by zhmcode on 2019/2/15 0015. */public class MyBubbleS...
2019-02-15 11:31:26 54699 17
原创 二分查找
二分查找1. 二分查找的条件必须是有序数组2. 二分查找的思想我们先将被查找的数和数组的中间键对应的value比较,因为数组是有序的,所有若被查找的数小于数组的中间键对应的value则这个数则在数组的左部分,然后将中间键的左边数组当作一个数组来进行二分查找。反之,则在数组的右部分,若相等,则查找成功。3. 两种实现方式package com.zhmcode.binarysearch;...
2019-02-15 10:43:49 4198 1
原创 Spark自定义AccumulatorV2
Spark自定义AccumulatorV21.概述###AccumulatorV2的简单使用与注意事项见上一遍博客https://blog.csdn.net/wtzhm/article/details/86481846在实际开发中很多时候需要用到自定义Acummulator,Accumulator太多了,不便于维护,例如项目如果要出现一些逻辑上的变更,比如说,session数量的计算逻辑,...
2019-01-20 21:49:09 956
原创 Spark 的 Accumulator与 AccumulatorV2
Spark 的 Accumulator1.概述Accumulator累加器能精确地统计数据的各种属性,eg:可以统计符合条件的session,在一段时间段内产生了多少次购买,统计出各种属性的数据。2. 例子def main(args: Array[String]): Unit = { val conf = new SparkConf().setMaster("local[2]")....
2019-01-14 18:23:23 2556
原创 Spark 高性能算子
Spark 高性能算子1. map 与 mapPartitions1.优缺点mapPartition的优点:普通的map执行一个partition中有1.2万条数据。ok,那么function要执行和计算1.2万次。如果使用MapPartitions操作之后,一个task仅仅会执行一次function,function一次接收所有的partition数据。只要执行一次就可以了,性能比较高...
2019-01-11 17:25:39 1377
原创 回归spark30多个算子
回归spark30多个算子1. spark算子分类Transformation 变换/转换算子Transformation 操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。Action 行动算子Action 算子会触发 Spark 提交作业(Job),并将数据输出 Spark系统。...
2019-01-11 10:06:38 273
原创 iterator与iterable接口之间的区别
iterator与iterable接口之间的区别1.区别Iterator是迭代器类,而Iterable是为了只要实现该接口就可以使用foreach,进行迭代.Iterable中封装了Iterator接口,只要实现了Iterable接口的类,就可以使用Iterator迭代器了。集合Collection、List、Set都是Iterable的实现类,所以他们及其他们的子类都可以使用fo...
2019-01-08 11:46:44 591
原创 log4j+flume+kafka模拟Spark Streaming流式处理数据
log4j+flume+kafka模拟Spark Streaming流式处理数据1. java 编程模拟日志产生/** * 模拟Logger 产生日志 */public class LoggerGenerator { private static Logger logger = Logger.getLogger(LoggerGenerator.class.getName());...
2018-12-19 20:00:10 343
原创 SparkStreaming 集成Kafka详解
SparkStreaming 集成Kafka详解1.概述SparkStream集成Kafa有两种方式,Receiver-based Approach与Direct Approach,在集成的时候得注意spark版本与kafka的版本是否兼容。2.Receiver-based Approach1)概述此种方式使用的是recevier 接收数据,recevier使用的是the Kafka h...
2018-12-18 11:24:13 449
原创 SparkStreaming 集成Flume详解
SparkStreaming 集成Flume详解1.Flume-style Push-based Approach1).push方式:flume agent的sink需要使用avro,spark application是一个receiver,接受flume push过来的数据。2).由于是使用的push方式,要先运行spark application,然后才能启动flume3).flume...
2018-12-14 16:08:22 389 1
原创 Spark Streaming 基础
Spark Streaming 基础1. SparkStreaming概述1).Spark Streaming用于流式数据的处理,Spark Streaming有高吞吐量和容错能力强等特点。2).他导入kafka、flume、hdfs等数据源,经过处理输出到hdfs、databases等。2. StreamingContext1).通过SparkConf获取val conf = n...
2018-12-11 17:56:49 244 1
原创 SparkSq日志分析项目实践
Spark 日志分析项目实践总结1. 概述1). 用户日志:用户每次访问网站所有的行为(点击、浏览、访问、搜索)我们可以通过对日志的分析获取网站页面的访问量、网站的黏性、用户行为日志、推荐2). 用户行为日志内容3). 日志获取方式2.离线数据处理架构3. 数据清洗4. spark sql 业务逻辑处理1).使用 spark sql语句处理业务逻辑,关键代码如下//读取数...
2018-12-11 11:58:43 543 1
原创 flume与kafka实战配置
flume与kafka实战配置1. 概述在实战中,产生日志文件的服务器和hadoop集群一般不是在同一个服务器上,这时需要使用Flume avro架构模型,在web服务器上搭建一个flume,在hadoop集群上搭建一个flume。在这方便测试我们使用如下架构测试.2. Flume avro架构模型3.flume-webserver.properties 配置文件特别说明:下面配置是f...
2018-12-11 11:27:36 1782
原创 kafka java 编程
kafka java编程1.引入kafka<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka_2.11</artifactId> <ve
2018-12-10 19:58:36 404 1
原创 kafka基础
kafka基础1.概述Kafka 是一个基于分布式的消息发布-订阅系统,它被设计成快速、可扩展的、持久的。Kafka 在主题当中保存消息的信息。生产者向主题写入数据,消费者从主题读取数据。2.关键字解析BrokerKafka 集群包含一个或多个服务器,其中的服务器被称为 broker。Topic一个 topic 可以认为是一类消息,每个 topic 将被分成多个 partition...
2018-12-10 10:08:29 239
原创 Spark运行的4种模式
Spark 运行的4种模式1. 4种运行模式概述图2. 不同的提交参数说明 ./bin/spark-submit \ //主类入口 --class <main-class> \ // 指定appname --name <appname> \ //pom依赖所需要的resource目录下的资源文件 --files ...
2018-12-05 16:57:33 3571
原创 SparkSql处理日志后保存到mysql中
SparkSql处理后的数据保存到Mysql中1.原始JDBCobject SqlUtils { /** * 获取连接 */ def getConnection():Connection = { DriverManager.getConnection("jdbc:mysql://192.168.126.31:3306/sparklog?use...
2018-12-04 10:24:48 1427
原创 一张图详解maven
一张图详解maven1. maven 概述Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑2. maven...
2018-12-02 18:19:13 376 1
原创 Rdd与DataFrame互操作
Rdd与DataFrame互操作1. spark通过StructType直接指定Schemaobject StructTypeBySchema { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setAppName("StructTypeBySchema").setMas...
2018-11-23 18:15:10 174
原创 Spark SQL 外部数据源
Spark SQL 外部数据源1. 概述外部数据源API方便快速从不同的数据源(json,parquet,rdbms)引入处理数据,经过混合处理,写回到指定文件系统上去。2. 操作parquet文件数据读数据spark.read.format(“parquet”).load(path)spark.read.format(“parquet”).option(“path”,&amp;quot; … &amp;quot;...
2018-11-22 16:43:02 245
原创 SparkSQL整合 HIVE
SparkSQL整合 HIVE安装hive(配置好)将配置好的hive-site.xml放入$SPARK-HOME/conf目录下将mysql-xxx-connector-xx.jar放到spark集群中节点的lib目录下启动spark-shell时指定mysql连接驱动位置先启动spark:sbin/start-all.shbin/spark-shell \ --mast...
2018-11-13 11:41:41 283
原创 hive 的JDBC/ODBC接口
hive 的JDBC/ODBC接口1. 概述hive提供了三种用户接口:CLI,JDBC/ODBC和 WebUI,JDBC/ODBC 是 Hive 的Java,与使用传统数据库JDBC的方式非常类似。2. 导入依赖包 <dependency> <groupId>org.apache.hive</groupId> <arti...
2018-11-05 15:15:16 4062
原创 HBase过滤器
HBase过滤器1.概述Fliter过滤器: Filter可以根据簇、列、版本等更多的条件来对数据进行过滤,基于Hbase本身提供的三维有序(主键有序、列有序、版本有序),这些Filter可以高效的完成查询过滤的任务。2. 抽象操作符 与比较器** 抽象操作符(比较运算符)**LESS <LESS_OR_EQUAL <=EQUAL =NOT_EQUAL <...
2018-10-30 09:35:38 186
原创 HBase Java API 操作
hbase创建表,删除表,修改表,添加数据,删除数据 的API操作public class HbaseTest { private static final String ZK_CONNECT_KEY = "hbase.zookeeper.quorum"; private static final String ZK_CONNECT_VALUE = "master:2181,s...
2018-10-26 10:13:57 201
原创 启动hbase自动关闭,查看日志连接端口8020拒绝连接
连接master:8020时出错,8020是hdfs的默认端口,但是在配置hadoop集群时在core-site.xml中将hdfs的默认端口改为了9000。如果在安装hbase的时候没有配置好指定hdfs的端口,那么在hbase启动后它会去找hdfs的默认端口8020,于是就导致了上面的错误。解决方案:在配置hbase.rootdir属性时显式指定hdfs的端口为9000,配置文件修改如下:...
2018-10-25 15:04:05 2768
原创 MapReduce应用
MapReduce应用一. mapreduce中的combinercombiner是MR程序中Mapper和Reducer之外的一种组件combiner组件的父类就是Reducercombiner和reducer的区别在于运行的位置:Combiner是一个本地化的reduce操作,它是map运算的后续操作,主要是在map计算出中间文件前做一个简单的合并重复key值的操作;每一个map都...
2018-10-23 08:51:07 1148
原创 Hadoop hdfs 处理大量小文件
Hadoop hdfs 处理大量小文件1. 概述小文件是指文件size小于HDFS上block大小的文件。这样的文件会给hadoop的扩展性和性能带来严重问题。2. 小文件过多的缺点A. 内存扛不住在HDFS中,任何block,文件或者目录在内存中均以对象的形式存储,每个对象约占150byte,如果有1000 0000个小文件,每个文件占用一个block,则namenode大约需要2G...
2018-10-16 17:14:17 1237
原创 HIVE 的 HQL 总结
HIVE 的 HQL 总结1. group by 与 where 与 havingA. having只能用在group by之后,对分组后的结果进行筛选(即使用having的前提条件是分组)。使用having字句对分组后的结果进行筛选B. where肯定在group by 之前,当结合在一起时,where在前,group by 在后。即先对select xx from xx的记录集合用whe...
2018-10-10 16:56:13 478
原创 HIVE 数据倾斜
HIVE 数据倾斜1. 什么是数据倾斜由于数据分布不均匀,造成数据大量的集中到一点,造成数据热点2. 产生数据倾斜的原因A:key 分布不均匀一个表很小,但是key集中;分发到某一个或者几个Reduce上的数据远高于平均值。B:业务数据本身的特性C:建表考虑不周全D:某些 HQL 语句本身就存在数据倾斜group by数据维度非常的小,某值的数据非常多;处理某值的reduce非...
2018-10-09 14:52:05 815
原创 HIVE窗口函数
HIVE窗口函数1. Hive窗口函数 SUM,AVG,MIN,MAX数据格式zhm,2018-04-10,12zhm,2018-04-11,51zhm,2018-04-12,72zhm,2018-04-13,31zhm,2018-04-14,21zhm,2018-04-15,14zhm,2018-04-16,44 创建表 create table fun_table1 ...
2018-10-09 09:33:21 399
原创 HIVE 乱码问题
HIVE 乱码问题1.概述创建表的时候,comment说明字段包含中文,表成功创建成功之后,中文说明显示乱码,这是因为在MySQL中的元数据出现乱码,那么我们只需要把相应注释的地方的字符集由 latin1 改成 utf-8,就可以了。用到注释的就三个地方,表、分区、视图。 2.解决方案进入数据库 Metastore 中执行以下 5 条 SQL 语句修改表字段注解和表注...
2018-08-24 17:16:57 700
原创 sqoop 导入导出数据命令参数详解
sqoop 导入导出数据命令参数详解1. 从关系数据库中导入到hdfs中sqoop import \--connect<jdbc-uri> 指的是连接地址,这里面是mysql服务器的地址;--username<username> 数据库用户名--password<password> 数据库密码--target-dir<dir&g...
2018-08-18 16:25:01 12657
spark-streaming-flume-sink_2.11_2.1.1.jar
2018-12-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人