- 博客(85)
- 资源 (6)
- 收藏
- 关注
原创 DataX更新null值到ElasticSearch不生效的问题
DataX 更新 null 值到 Elasticsearch 不生效的问题
2022-11-11 11:51:29 1886 1
原创 【Redis读书笔记】1.简单动态字符串
Redis 使用 SDS (简单动态字符串) 来存储字符串类型的值,是对 C 语言里的 字节数组的封装。以提高读写速度。一、数据结构struct sdshdr { // 记录 buf 数组中已使用字节的数量 // 等于 SDS 所保存字符串的长度 int len; // 记录 buf 数组中未使用字节的数量 int free; // 字节数组,用于保存字符串 char buf[];};SDS 的示例图:二、buf[] 空间预分配
2021-05-19 11:59:42 286
原创 传统业务场景下的Flink实时计算探索实践
由于 Flink 支持事件时间、有状态的计算、可以灵活设置窗口等特点,收到业界的广泛追捧。我所在的公司并不是典型的互联网公司,而是偏传统的金融公司,我也想探索一下怎么能利用 Flink 这个好的工具来服务公司的业务,所以对 Flink 的应用场景做了一番尝试。下面我将探索的过程记录下来,一是分享下自己的经历,二是希望跟同行交流,还望轻拍。一、背景我公司业务场景跟市面上大部分 Flink 使用场景不太一样的地方在于以下几点:1. 表单类数据比较多要处理的数据里,日志类型的数据很少,基本上都是表单类的
2021-01-27 19:31:36 1283 1
原创 窗口函数order by对于null的排序规则
1、发现问题今天发现一个问题,在Hive中使用窗口函数对数据进行分组排序时,使用mr引擎和使用presto引擎得到的结果不一致,在这里把发现和解决问题的过程记录一下。row_number() over(partition by room_id order by out_time)(1)制造模拟数据创建表create table demo_over_order( room_id string comment '直播间ID' ,user_id string comment '用户
2020-10-29 09:43:21 3095
原创 Hive MapJoin中使用UDF遇到的ClassNotFound的问题
1、发现问题今天在执行一段hive脚本时遇到报错。脚本简化后示例如下:set hive.auto.convert.join=true;add jar hdfs://nsha/user/dw/udf/dw.hive.udf.jar;create temporary function myudf as 'com.xxx.dw.hive.udf.myUDF';select a.apply_no,b.overdue_levelfrom ( select apply_no from
2020-10-23 09:21:47 2364
原创 分区太多引起的内存溢出
执行一个hive sql时报了一个下面的错误,从错误堆栈上来看,是在SQL编译、解析、优化过程中出的错,还没有提交到YARN上执行。从Utilities.getPartitionDesc这句来看是优化的时候,在读取分区信息时出现了内存溢出。所以想到是不是扫描的表,分区是不是太多了。果然SQL中的一个表有36万个分区,这种分区太多的情况应该避免的。 Exception in thread "main" java.lang.OutOfMemoryError: Java heap space at ja
2020-07-06 10:24:44 2112
原创 Hadoop RPC初探
1、各个工具的通讯技术在分布式系统中,网络通讯是底层的基础模块,不同的大数据工具使用不同的通讯技术,比如:组件通讯技术HadoopHadoop自己封装了RPCFlinkAkkaKafkaNIOSpark老版本使用了Akka,新版本NettyHadoop自己对RPC做了封装,叫做Hadoop RPC,RPC是Remote Procedure Call的简称,是远程过程调用,远程调用是指不同进程之间的调用,过程调用是指方法调用,也就是不同进程之间的方法调用
2020-06-30 10:00:10 344
原创 Flink维表Join实践
这个文章是根据 【实时数仓篇】基于 Flink 的典型 ETL 场景实现 写的,对视频中讲解的四种维表Join分别实现了一些Demo。常见的维表Join方式有四种:预加载维表热存储维表广播维表Temporal table function join下面分别使用这四种方式来实现一个join的需求,这个需求是:一个主流中数据是用户信息,字段包括用户姓名、城市id;维表是城市数据,字段包括城市ID、城市名称。要求用户表与城市表关联,输出为:用户名称、城市ID、城市名称。1、 预加载维表通过定义
2020-06-01 22:06:35 4680 6
原创 哈希原理与常见哈希函数
一,什么是哈希哈希是将任意长度的数据转换为一个数字的过程。这个数字是在一个固定的范围之内的。转换的方法称为哈希函数,原值经过哈希函数计算后得到的值称为哈希值。1.哈希特点(1)一致性:同一个值每次经过同一个哈希函数计算后得到的哈希值是一致的。F(x)=rand() :每次返回一个随机值,是不好的哈希(2)散列性:不同的值的哈希值尽量不同,理想情况下每个值对应于不同的数字。F(x)...
2020-01-09 19:29:54 7113 1
原创 布隆过滤器
0. 问题在内存中怎么快速判断一个数据是否存在于一个大的数据集合中呢?比如在以下场景:某大型网站服务于全球客户,用户数量非常多,已经达到十亿,需要实时计算网站UV,计算逻辑是当来的一个访问用户的cookie时,要判断用户cookie是否已经记录过了,如果没有记录过UV就加1,如果记录过就不加1。这就需要快速地判断某一个用户cookie是否在已经记录的集合中,怎么实现呢?接下里我们从简单入手,...
2019-11-27 07:31:50 728
原创 Java中的集合:数组、Collection、Map
一、 数组1. 数组的特点通常不把数组归为集合的一种,暂且不管数组是否属于集合的争论。数组是一种数据结构,它存储的所有的元素类型必须是一样的。数组一旦创建后大小就不可以再改变了,但是各个元素值可以改变。数组和List、Set、Map集合有什么不一样的地方呢?一是数组效率更高,数组Java中存储和随机存取效率最高的;二是数组可以存储基本类型的数据,这是其他集合无法直接做到的。数组强调的是性...
2019-11-20 19:49:46 1511
转载 MySQL中的B+树
本文是根据这篇文章做的笔记MySQL中的索引类型我们平常创建的MySQL表存储引擎大部分是InnoDB,存储引擎的不同决定了数据存储结构的不同。在InnoDB引擎中创建索引可以选择的存储结构有B+树和HASH,默认的存储结构是B+树。要介绍 B+ 树索引,就不得不提二叉查找树,平衡二叉树和 B 树这三种数据结构。B+ 树就是从他们一步步演化来的。二叉树如图所示,有一个user表的数据有...
2019-11-13 21:02:39 3005
原创 JAVA程序运行时的内存分配
java程序运行时有哪些内存数据区呢?很多人都将内存分为堆和栈,大家最关心的也是这两块内存数据区,但是这种划分比较粗糙,实际上在程序运行时,还有其他数据区。根据《JAVA虚拟机规范Java SE 8版》的描述,分为以下几个数据区:程序计数寄存器:它是线程的寄存器,每一个线程有自己的一块程序计数寄存器,它保存了当前线程正在执行的字节码指令的行号。因为多线程是轮流分配CPU时间来实现的,所以在任...
2019-07-23 18:28:21 528
原创 Flink DataStream常用算子
Flink中的算子是将一个或多个DataStream转换为新的DataStream,可以将多个转换组合成复杂的数据流拓扑。在Flink中,有多种不同的DataStream类型,他们之间是使用各种算子进行的。如下图所示:以下列举下常用的算子,用到的代码例子都是Flink监听9000端口做为数据源。以下方法可以启动一个9000的socket端口服务。Linux平台上可以使用bashnc -...
2019-02-14 11:41:03 28948 7
原创 Java8 Stream API
集合在Java中使用的非常多,在对数据处理中,List几乎是最常用的API,为了更方便地使用函数式编程对List进行操作,Java8新增了stream。Stream表示数据流,它不是数据结构,也并不保存数据,在它上面的操作也不会改变原Stream,而是新生成Stream。它提供了过滤、排序、映射、规约等多种操作。Stream借助Lambda表达式,提高了编程效率和程序可读性。Stream的操作...
2019-01-24 15:17:33 385
原创 Java8 Lambda java.util.function下的接口
java.util.function包下的接口java.util.function包中有很多函数式接口,他们分为四种类型:逻辑判断接口有输入输出的接口无输入有输出的接口有输入无输出的接口1. 逻辑判断接口逻辑判断接口的代表就是java.util.function.Predicate接口,这个接口的方法返回一个布尔值。这个接口的定义如下:package java.util.fu...
2019-01-22 10:56:04 1318
原创 Java8 Lambda 语法结构、方法引用
什么是Lambda表达式Lambda表达式可以看做是一个匿名方法。将一个Lambda表达式做为参数传递给方法,行为参数化,就实现了函数式编程。在没有Lambda之前,要实现函数式编程就需要使用匿名类,如果用Lambda会使得代码更加简洁、清晰。举个例子:如果要实现传递方法的方式实现加法和减法,可以使用下面匿名类的写法: public class Demo0 { //两个参数的...
2019-01-22 10:55:02 1133 1
原创 python通过thrift访问HBase报错Invalid method name
出现的问题在准备用python的happybase包通过thrift连接HBase,运行脚本的时候报错,报错大体如下:thrift.Thrift.TApplicationException: Invalid method name:'getTableNames'代码如下:# -*- coding: utf-8 -*-import happybasedef demo_hbase...
2018-05-30 08:52:52 3622
原创 大数据可以统计到媳妇的喜好吗?
利用大数据技术统计媳妇的喜好是一个相当不靠谱的事情,因为程序员再牛、使用再炫酷的技术去统计媳妇的喜好,都不如离开电脑陪媳妇聊会天、一起做个饭、拉拉家常、用心去感受媳妇的喜怒哀乐,给予所需、赠予所盼。既然非得要去使用技术手段得出点结论,那么也不能含糊,那么就立项做个规划吧。做个工作大体分为以下几个步骤:1、数据采集2、数据存储3、数据分类建模4、数据分析、统计、预测5...
2018-05-30 08:24:33 1325 5
原创 数据仓库架构设计的一点概念
1、数据仓库所处环节在一个成体系、结构化的数据应用场景下,数据和处理有四个层次: 操作层、数据仓库层、部门/数据集市层、个体层。(1) 操作层是指为具体业务提供实时响应的各个业务系统,比如常见的订单系统、ERP、用户中心等等具体业务系统,这些系统中的数据一般都是存入关系型数据库。它们是数据的来源。 (2) 数据仓库收集操作层各个业务系统中的数据,进行统一格式、统一计量单位,规整有序地...
2018-05-28 09:31:33 13109
原创 【十八掌●武功篇】第十掌:HiveSQL中分区筛选条件怎么写效率才最高
在写Hive SQL时,当遇到两个分区表a 和 b 相Join的时候,分区筛选条件怎么写效率才高呢?有下面三种书写方式,下面就根据三个语句的执行计划分析一下,看种写法的执行效率会更高。1、将分区筛选条件放入where中select * from his hleft join s_test s on h.ID_1=s.ID_1where h.dt='2018-05-07' a...
2018-05-23 19:13:28 3084 1
原创 【十八掌●武功篇】第十掌:参数mapreduce.job.reduce.slowstart.completedmaps
之前我所见到的hive语句在执行mapreduce job的时候,打印的日志都是当map执行到100%的时候,再执行reduce。今天在执行hive sql的时候发现map还没有执行完成,reduce任务就开始。如下图所示:开始不知道原因,后来经过度娘,发现原来在mapred-site.xml配置文件中有一个参数mapreduce.job.reduce.slowstart.complete...
2018-05-23 11:25:34 5032
原创 【十八掌●武功篇】第十掌:Hive中的Grouping Sets
自从Hive 0.10.0版本起,Hive增加了Grouping Sets、Cube、rollup操作和Grouping_ID函数。1、Grouping Sets可以在Group By语句后面添加Grouping Sets语句,以实现对同一个数据集上同时进行多组的group by操作。可以理解为多个group by 语句进行union操作。可以参考下面的例子: Groupi...
2018-05-21 18:49:16 4127
原创 【十八掌●武功篇】第十掌:根据一个错误探究MapJoin
一、出现的问题在执行一个Hive SQL的时候,遇到一个报错,语句和报错信息如下:select h.ID_1,h.ID_2,h.ID_3,h.ID_4,h.ID_5,h.ID_6,h.ID_7,h.ID_8,h.ID_9,h.change_code,h.s_date,'2018-05-07' as e_datefrom ( select ...
2018-05-21 11:26:27 868
原创 Spark架构、原理、缓存
这一篇博文是【大数据技术●降龙十八掌】系列文章的其中一篇,点击查看目录:大数据技术●降龙十八掌1、 Spark 组件架构Spark应用的运行架构主要分三部分:Driver、Worker Node、ClusterManager Manager。一个job是从driver开始的,driver本质上起监督的作用,保持与集群中其他实体之间的联系,并将任务提交给worker节点执行,work...
2018-03-02 17:32:24 706
原创 【十八掌●武功篇】第十一掌:HUE简介、基本安装配置
一、 HUE简介HUE是Hadoop User Experience的简称,是一个Apache Hadoop UI系统,由Cloudera Desktop演化而来,是基于Python Web框架Django实现的,Cloudera公司将HUE贡献给Apache基金会的Hadoop社区,所以HUE有Apache版本和CDH版本,本文是基于CDH版本的。官网的文档地址是:http://arc...
2018-02-27 18:08:19 842
原创 【十八掌●武功篇】第七掌:MapReduce之单元测试
MRUnit是一个基于JUnit的单元测试框架,专门用来对Hadoop框架的MapReduce进行单元测试。MRUnit针对于不同的测试对象使用不同的Driver: - MapDriver,针对单独的Map测试。 - ReduceDriver,针对单独的Reduce进行测试。 - MapReduceDriver,将Map和Reduce连贯起来进行测试。单元测试实例1、...
2018-02-27 16:17:09 423
原创 【十八掌●武功篇】第七掌:MapReduce之计数器
计数器是Hadoop框架使用的一种针对错误信息收集的手段,主要用于对数据的控制及收集统计信息,计数器可以帮助程序设计人员收集某一类特定信息的数据,对于大多数的Hadoop框架内的事件和组件,使用计数器来获取信息比查阅日志文件要容易的多。MapReduce框架中已经内置了一些计数器,也可以自定义计数器。(1) 内置计数器的分类 分组 属性名 MapReduce...
2018-02-27 16:13:58 436
原创 【十八掌●基本功篇】第二掌:Linux之用户和文件权限总结
一、用户相关文件1. /etc/passwd文件这个passwd文件是Linux用户信息文件。文件格式说明如下:root:x:0:0:root:/root:/bin/bashbin:x:1:1:bin:/bin:/sbin/nologin......hadoop:x:500:500::/home/hadoop:/bin/bash文件中每一行是一个用户,各列以:分割,...
2018-02-27 15:33:12 473
原创 【十八掌●武功篇】第七掌:MapReduce之倒排索引
维基百科上讲: 倒排索引(英语:Inverted index),也常被称为反向索引、置入档案或反向档案,是一种索引方法,被用来存储在全文搜索下某个单词在一个文档或者一组文档中的存储位置的映射。它是文档检索系统中最常用的数据结构。 有两种不同的反向索引形式: 1. 一条记录的水平反向索引(或者反向档案索引)包含每个引用单词的文档的列表。 2. 一个单词的水平反向索引(或者完
2018-01-31 13:53:25 445
原创 【十八掌●武功篇】第七掌:MapReduce之group
这一篇博文是【大数据技术●降龙十八掌】系列文章的其中一篇,点击查看目录:大数据技术●降龙十八掌group是mapreduce处理数据的常用操作,group操作是基于数据集中某一个字段或者多个字段为键,对记录进行分组,然后对每一组中的数据进行聚和操作(最大值、最小值、求和、平均值、中位数、方差、标准差)。1、mapreduce实现group的过程map函数中读取每一条记录,抽取出分
2018-01-30 10:03:53 596
原创 【AI_机器学习】基础知识
一、机器学习开发流程1、数据收集数据来源一般有三类: (1) 业务数据 (2) 日志数据 (3) 外部数据2、数据预处理大部分情况下,收集到的数据需要经过处理才能够为算法所用,预处理的主要有以下几个部分: (1) 数据过滤 (2) 缺失值处理 (3) 处理可能的异常、错误、或者异常值 (4) 合并多个数据源来的数据 (5) 数据汇总数据清洗与转换
2018-01-30 09:00:11 1273
原创 【十八掌●武功篇】第七掌:MapReduce之join详解
这一篇博文是【大数据技术●降龙十八掌】系列文章的其中一篇,点击查看目录:大数据技术●降龙十八掌一、Reduce Joinreduce端的join操作大概是所有mapreduce join操作中最简单的一种,它通过某一个外键将多个数据集连接起来,可以非常容易地实现inner join、left join、right join、full join,并且它对参与连接的数据集大小没有限制,
2018-01-30 08:57:49 492
原创 【十八掌●基本功篇】第一掌:Java之HashMap
这一篇博文是【大数据技术●降龙十八掌】系列文章的其中一篇,点击查看目录:大数据技术●降龙十八掌HashMap是经常使用的一个类型,它有一些特点: (1) 键值允许为null。 (2) 是非同步、线程不安全的类 (3) 不能保证按照插入顺序排序,也不能保证不同的时间,顺序不变。 (4) 按照key读写速度比较快。HashMap类图(1) HashMap:HashMap
2018-01-02 17:10:33 498
原创 【十八掌●基本功篇】第一掌:Java之String的equals方法
这一篇博文是【大数据技术●降龙十八掌】系列文章的其中一篇,点击查看目录:大数据技术●降龙十八掌1、Java的一个例子public static void main(String[] arge) { //1 String str1 = new String("1234"); String str2 = new String("12
2017-12-29 14:23:08 361
原创 【十八掌●基本功篇】第一掌:Java之多线程--锁
这一篇博文是【大数据技术●降龙十八掌】系列文章的其中一篇,点击查看目录:大数据技术●降龙十八掌synchronized可以实现同步访问,java.util.concurrent.locks包下的Lock也可以实现同步访问。 synchronized是java中的一个关键字,是Java语言内置的特性。处于synchronized作用下的代码块或者方法代码块,是不允许两个线程同时进入,不管是读操作还是
2017-12-19 18:24:31 422
转载 GitChat·大数据 | 史上最详细的Hadoop环境搭建
GitChat 作者:鸣宇淳 原文: 史上最详细的Hadoop环境搭建 关注公众号:GitChat 技术杂谈,一本正经的讲技术 【不要错过文末彩蛋】前言Hadoop在大数据技术体系中的地位至关重要,Hadoop是大数据技术的基础,对Hadoop基础知识的掌握的扎实程度,会决定在大数据技术道路上走多远。这是一篇入门文章,Hadoop的学习方法很多,网上也有很多学习路线图。本文的思路
2017-12-14 10:31:51 1888 1
原创 【十八掌●基本功篇】第一掌:Java之多线程--3-线程池
这一篇博文是【大数据技术●降龙十八掌】系列文章的其中一篇,点击查看目录:大数据技术●降龙十八掌系列文章: 【十八掌●武功篇】第一掌:Java之IO 【十八掌●武功篇】第一掌:Java之多线程–1-一些概念 【十八掌●武功篇】第一掌:Java之多线程–2-join、同步、死锁、等待 【十八掌●武功篇】第一掌:Java之多线程–3-线程池1、线程池线程池的基本思想是开辟一
2017-12-13 09:31:39 385
MapReduceV2笔记
2018-05-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人