hive 自定义函数UDF hive 自定义函数UDF1. 内置函数查看内置函数: show functions;显示内置函数的详细信息: desc funcation sum;显示函数的扩展信息: desc funcation extended sum;2. 自定义函数UDF当hive提供的内置函数无法满足业务处理需求时,此时就可以考虑使用用户自定义函数。UDF(user-defined functi...
Linux常用命令 Linux常用命令1. ls命令就是list的缩写,通过ls命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限ls -a 列出所有文件,包含以“ . ”开始的隐藏文件ls -r 反序排列ls -S 以文件大小排列ls -t 以文件修改时间排列ls -l 除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来eg: ls -l *.sh 列出所有以.s...
安装github项目的jar包到自己的maven仓库中 安装github项目的jar包到自己的maven仓库中1. 概述在实际开发中,我们可能使用到github已有的开源项目,在使用maven的时候,在maven仓库中找不到这个github项目的maven,这个时候我们需要将GitHub源码打成jar包,安装到自己的maven仓库中。2.例子根据IP地址查找城市名称,使用GitHub项目:https://github.com/wzhe06/ip...
Azkaban概述详解 Azkaban概述详解本文简单介绍一下Azkaban及其特点。azkaban是一个开源的任务调度系统,用于负责任务的调度运行(如数据仓库调度),用以替代linux中的crontab。一、Azkaban是什么?1.1 Azkaban是什么?Azkaban是一套简单的任务调度服务,整体包括三部分webserver、dbserver、executorserver。Azkaban是linkin...
java 1.8 HashMap的实现原理 java 1.8 HashMap的实现原理1. hash 表数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),当然,对于有序数组,则可采用二分查找,插值查找查找等方式,可将查找复杂度提高为O(logn);对于一般的插入删除操作,涉及到数组元素的移动,其平均复杂度也为O(n)...
无法导入 import spark.implicits._ 报错 无法导入 import spark.implicits._ 报错##import spark.implicits._ 中的spark 指的是SQLContext或者SparkSessioneg1:def main(args: Array[String]): Unit = { val spark = SparkSession.builder() ...
快速排序 快速排序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从...
选择排序 选择排序1. 选择排序的思想每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。就如斗地主发牌后,将最大的牌或者最小的牌放到左边或者右边。2. 编码 package com.zhmcode.selectionsort; /** * Created by zhmcode on 2019/2/16 0016. */ public class ...
冒泡排序 冒泡排序1.冒泡排序思想让数组当中相邻的两个数进行比较,数组当中比较小的数值向下沉,数值比较大的向上浮!外层for循环控制循环次数,内层for循环控制相邻的两个元素进行比较。2. 编码package com.zhmcode.bubblesort;/** * Created by zhmcode on 2019/2/15 0015. */public class MyBubbleS...
二分查找 二分查找1. 二分查找的条件必须是有序数组2. 二分查找的思想我们先将被查找的数和数组的中间键对应的value比较,因为数组是有序的,所有若被查找的数小于数组的中间键对应的value则这个数则在数组的左部分,然后将中间键的左边数组当作一个数组来进行二分查找。反之,则在数组的右部分,若相等,则查找成功。3. 两种实现方式package com.zhmcode.binarysearch;...
Spark自定义AccumulatorV2 Spark自定义AccumulatorV21.概述###AccumulatorV2的简单使用与注意事项见上一遍博客https://blog.csdn.net/wtzhm/article/details/86481846在实际开发中很多时候需要用到自定义Acummulator,Accumulator太多了,不便于维护,例如项目如果要出现一些逻辑上的变更,比如说,session数量的计算逻辑,...
Spark 的 Accumulator与 AccumulatorV2 Spark 的 Accumulator1.概述Accumulator累加器能精确地统计数据的各种属性,eg:可以统计符合条件的session,在一段时间段内产生了多少次购买,统计出各种属性的数据。2. 例子def main(args: Array[String]): Unit = { val conf = new SparkConf().setMaster("local[2]")....
Spark 高性能算子 Spark 高性能算子1. map 与 mapPartitions1.优缺点mapPartition的优点:普通的map执行一个partition中有1.2万条数据。ok,那么function要执行和计算1.2万次。如果使用MapPartitions操作之后,一个task仅仅会执行一次function,function一次接收所有的partition数据。只要执行一次就可以了,性能比较高...
回归spark30多个算子 回归spark30多个算子1. spark算子分类Transformation 变换/转换算子Transformation 操作是延迟计算的,也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算。Action 行动算子Action 算子会触发 Spark 提交作业(Job),并将数据输出 Spark系统。...
iterator与iterable接口之间的区别 iterator与iterable接口之间的区别1.区别Iterator是迭代器类,而Iterable是为了只要实现该接口就可以使用foreach,进行迭代.Iterable中封装了Iterator接口,只要实现了Iterable接口的类,就可以使用Iterator迭代器了。集合Collection、List、Set都是Iterable的实现类,所以他们及其他们的子类都可以使用fo...
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());...
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());...
SparkStreaming 集成Kafka详解 SparkStreaming 集成Kafka详解1.概述SparkStream集成Kafa有两种方式,Receiver-based Approach与Direct Approach,在集成的时候得注意spark版本与kafka的版本是否兼容。2.Receiver-based Approach1)概述此种方式使用的是recevier 接收数据,recevier使用的是the Kafka h...
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...