![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
大数据
文章平均质量分 62
张行之
闻道有先后,术业有专攻。
展开
-
Hive表命名规范
Hive表命名规范一、命名规则业务产品_层名_计算周期&&统计周期_表类型_存储类型_表的业务含义举个例子:1.浏览器业务产品的 每天计算的 hive 搜索事件的 事实表 明细数据 browser_dwd_dd_face_hive_search2.浏览器业务产品 每天全量 城市 hive维表 browser_dim_da_dic_hive_city3.浏览器业务产品 每天 搜索网站 次数统计 排名 browser_al_dd_rpt_hive_search_web_ran原创 2020-09-30 17:47:38 · 5083 阅读 · 0 评论 -
Hive之MapReduce性能优化
Hive优化一、Hive任务创建文件数优化1.1 Map端文件合并减少Map任务数量一般来说,HDFS的默认文件块大小是128M,如果在Hive执行任务时,发现Map端的任务过多,且执行时间多数不超过一分钟,建议通过参数,划分(split)文件的大小,合并小文件。如:set hive.input.format=org.apache.hadoop.hive.ql.io.CombineHiveInputFormat;set mapreduce.input.fileinputformat.split.m原创 2020-09-20 22:05:02 · 3663 阅读 · 0 评论 -
Hive添加列、修改列(调整位置)、删除列操作等
1.添加1列或多列# 添加1列alter table table_name add columns( user_id bigint comment '用户ID');# 添加多列alter table table_name add columns( name string comment '用户名称', city string comment '城市', sex string comment '用户性别', age s原创 2020-09-11 18:35:51 · 23722 阅读 · 2 评论 -
Hive Archive合并文件归档,减少小文件数量(推荐)
我们在使用Hive存储时,有时会遇到Hive表的文件大小不大,但是文件数量众多;这是可能会遇到HDFS的储存空间没到阈值,但文件数量超过阈值。如果小文件太多,容易影响整个集群的性能。那么对于小文件多的问题,有以下处理方法:1.输出时减少reduce的数量;但可能会导致job运行变慢2.使用Spark重新读取小文件,修改分区并写入,这里不建议使用repartition(),推荐使用coalesce()repartition()会增加文件的大小,因为要历经shuffle阶段,但coalesce()不会经原创 2020-09-10 18:46:24 · 1410 阅读 · 1 评论 -
Structured Streaming流数据Sink到Mysql
Structured Streaming流数据Sink到MysqlStructured Streaming在Write的过程,并没有提供jdbc的写入format格式。所以需要自己通过foreach自己实现。具体实现代码如下:StructuredWriteMysql类package com.testimport java.sql.Connectionimport org.apac...原创 2019-01-11 16:25:19 · 3486 阅读 · 4 评论 -
Flink DataStream之min()与minBy(),max()与max之间的区别
Flink DataStream之min()与minBy(),max()与max之间的区别min():获取的最小值,指定的field是最小,但不是最小的那条记录,后面的示例会清晰的显示。minBy():获取的最小值,同时也是最小值的那条记录。max()与maxBy()的区别也是一样。那么下面来看示例:public class MinOrMinByOperator { publi...原创 2019-10-31 12:39:53 · 5594 阅读 · 8 评论 -
Flink的多种提交方式
Flink的多种提交/运行方式Flink具有多种提交方式,比如:常用的local模式,stantalone模式,yarn模式,k8s等。这里主要对比local,stantalone,yarn三种提交方式。一、本地(local)模式,仅开发使用1.1 纯粹的local模式运行这就是直接运行项目中的代码的方式提交:public class TestLocal { public st...原创 2019-10-31 12:39:43 · 23344 阅读 · 0 评论 -
解决Flink输出日志中时间比当前时间晚8个小时的问题
解决Flink输出日志中时间比当前时间晚8个小时的问题在flink standalone集群上,发现log输出时间比当前时间晚8个小时,我的集群系统时间是CTM+8时区的。一开始发现时间不对,还不太上心,后面发现业务在本地跑起来是正常的,提交到集群跑不输出结果,这下就尴尬了。经过一系列的排查。发现ProcessTime时间不对。后面发现flink时间默认为UTC时间(真是个坑啊,心中默念,心平气...原创 2019-06-13 17:57:35 · 4478 阅读 · 5 评论 -
ElasticSearch Java High RESTful Api Basic认证的问题
ElasticSearch Java High RESTful Api Basic认证的问题因公司Elasticsearch集群升级到7.1.1,需要使用用户名密码登入。并且设置的user、role等权限。那么之前直接访问的方式是不行的。需要使用认证的方式进行访问。Elasticsearch的api非常的丰富。如:curl、python、java(多种)。下面展示curl、Python、Jav...原创 2019-10-31 12:42:00 · 6651 阅读 · 2 评论 -
Flink RMQSink写入RabbitMQ出现Connection数一直持续增加的问题
Flink RMQSink写入RabbitMQ出现Connection数一直持续增加的问题因业务需求,Flink程序要往RabbitMQ中写数据。一开始使用自己开发环境下的RabbitM,那是非常的顺溜。到测试环境,就出问题了。在RabbitMQ的web ui页面,看到连接数猛的增加,而且一直不停。导致测试环境的RabbitMQ挂了。当时蒙圈啊,出啥问题了,这么严重。经过一番排查对比。发现在R...原创 2019-06-13 17:59:30 · 2975 阅读 · 1 评论 -
Flink DataStream State Backend(状态后端)
Flink DataStream State Backend(状态后端)State Backend(状态后端)用Data Stream Api 编写的程序经常是需要保存状态的,如下面情况:Windows中聚集的元素直到被触发计算。在触发之前,需要保存Windows中的元素的状态。转换(Transformation)函数可以使用Key/Value状态接口存储状态值转换(Transform...原创 2019-07-01 17:21:32 · 3038 阅读 · 0 评论 -
Flink DataStream State(状态)
Flink DataStream State(状态)一、State(状态)的种类State有2类:Keyed State和Operator State。Keyed State:与keys相关的状态,仅仅用于Keyed Stream的Operator(算子)的Function。Operator State: Non-Keyed State,每个operator state都绑定到一个...原创 2019-07-01 17:23:08 · 3199 阅读 · 0 评论 -
Flink SplitStream的简单使用
Flink SplitStream的简单使用在Flink DataStream api中有一个split()算子,它的功能是将一个Stream,通过split()设置多个标记,划分成多个流。再通过select()获取对应标记的流。像种算子,可以根据不同的tag,进行不同的逻辑处理,可谓是非常的方便。具体看代码:public class SplitOperator { public ...原创 2019-06-05 18:10:03 · 4248 阅读 · 0 评论 -
Flink CEP简单示例----对用户访问页面顺序检测
Flink CEP简单示例----对用户访问页面顺序检测CEP是flink早期推出的一个的库,是基于一些规则模型,检测异常行为。比如检测反爬虫,或检测优惠活动褥羊毛行为等。下面简单介绍一下项目背景,使用CEP做模式检测。需求:因公司针对会员,发放优惠券活动,因防止羊毛党褥羊毛,通过Flink CEP进行异常检测。检测规则,如果同一个设备号在5分钟内顺序访问login页面–>my页面–...原创 2019-05-24 18:05:10 · 2246 阅读 · 0 评论 -
PySpark Structured Streaming kafka示例
PySpark Structured Streaming kafka示例直接上代码:#!/usr/bin/env python3 # -*- coding: utf-8 -*-from pyspark.sql import SparkSessionfrom pyspark.sql.functions import from_jsonfrom pyspark.sql.types...原创 2019-01-14 10:13:29 · 3074 阅读 · 2 评论 -
Flink 简单入门示例
Flink 简单入门示例1.Flink读取Socket流,实现Word Count示例import org.apache.flink.streaming.api.scala.{StreamExecutionEnvironment, _}import org.apache.flink.streaming.api.windowing.time.Timeobject SocketWindowW...原创 2019-01-24 14:49:19 · 4530 阅读 · 0 评论 -
Flink读取Kafka数据Sink到MySQL和HBase数据库
Flink读取Kafka数据Sink到MySQL和HBase数据库Flink将流数据Sink到数据库,一般需要自己自定义Sink的实现。下面示例,演示Sink到MySQL和HBase示例。import java.util.Propertiesimport org.apache.flink.api.common.serialization.SimpleStringSchemaimport o...原创 2019-01-24 16:53:15 · 9800 阅读 · 4 评论 -
Elasticsearch API简单操作
Elasticsearch API简单操作在操作Elasticsearch之前,需要先安装Elasticsearch集群,安装博客如:Elasticsearch集群安装下面介绍简单介绍Elasticsearch的3中操作方式,分别curl,java,python操作。1.curl操作基本上curl操作,通过GET,POST,DELETE操作就OK具体的模式如下:curl -X<V...原创 2019-02-13 17:14:55 · 2362 阅读 · 1 评论 -
MongoDB数据写入ES,SparkSQL读取ES的数据简单示例(Python)
MongoDB数据写入ES,SparkSQL读取ES的数据简单示例(Python)1.MongoDb数据写入ES代码示例#!/usr/bin/env python# -*- coding: utf-8 -*-import datetimeimport pymongofrom elasticsearch import Elasticsearchif __name__ == '__...原创 2019-02-14 15:32:10 · 1696 阅读 · 1 评论 -
解决Spark 读取 Elasticsearch的array类型报错的问题
解决Spark 读取 Elasticsearch的array类型报错的问题在我们读取Elasticsearch存储的半结构化的数据是,会遇到需要获取array类型的数据。然而会报错,错误截图如下:es.read.field.as.array.include通过es.read.field.as.array.include指定array类型,防止报错。代码如下:from pyspark....原创 2019-03-18 17:48:57 · 1840 阅读 · 0 评论 -
使用gensim计算文本相似度
使用gensim计算文本相似度计算文本相似度步骤逻辑1、将文本数据,通过jieba分词进行处理,形成一个二维数组2、将二维数组生成词典3、将二维数组通过doc2bow稀疏向量,形成语料库4、使用TF模型算法,将语料库计算出Tfidf值5、获取词典token2id的特征数6、计算稀疏矩阵相似度,建立一个索引7、测试数据jieba分词处理8、通过doc2bow计算测试数据的稀疏向量...原创 2019-04-25 15:00:56 · 11075 阅读 · 3 评论 -
Flink的Session Window的简单使用
Flink的Session Window的简单使用一、Session Window的概念参见官方文档https://ci.apache.org/projects/flink/flink-docs-release-1.8/dev/stream/operators/windows.html#session-windows二、业务需求本文的需求是:通过flink处理用户的行为日志,如果...原创 2019-10-31 12:39:20 · 3342 阅读 · 2 评论 -
Flink重启策略
Flink重启策略Flink支持不同的重启策略,可以控制在发生故障时如何重启新启动作业。默认重启策略是通过Flink的配置文件设置的flink-conf.yaml。配置参数restart-strategy定义采用的策略。如果未启用检查点,则使用“无重启”策略。如果激活了检查点并且尚未配置重启策略,则固定延迟策略将用于 Integer.MAX_VALUE重启尝试。重启策略分为:固定延迟重启策...原创 2019-06-26 18:19:32 · 5850 阅读 · 0 评论 -
Flink DataStream Manager(托管) Keyed State的简单使用
Flink DataStream Manager(托管) Keyed State的简单使用Manager(托管)Keyed State接口提供对不同类型状态的访问,这些状态都限定为当前输入元素的键。这意味着这种类型的状态只能用于一个 KeyedStream,可以通过创建stream.keyBy(…)返回KeyedStream对象。这个可用的State有:ValueState<T&g...原创 2019-07-02 15:38:48 · 1055 阅读 · 0 评论 -
Flink Table 将Stream追加写入Elasticsearch
Flink Table 将Stream追加写入ElasticsearchFlink Table提供了多种方式,写入ElasticSearch。一种是Connector的方式连接ElasticSearch,另一种是通过Sink的方式。下面分别介绍2种方式。一、Connector的方式写入Elasticsearchpublic class SqlSinkElasticSearchStream {...原创 2019-10-31 12:41:52 · 2359 阅读 · 0 评论 -
Flink Table 将Stream直接写入MySQL数据库
Flink Table 将Stream直接写入MySQL数据库Flink Table提供了一个JDBCAppendTableSink,可以直接往可靠地数据库中Sink数据,下面以MySQL为例:添加Maven的pom.xml依赖<dependency> <groupId>org.apache.flink</groupId> <arti...原创 2019-10-31 12:41:43 · 5319 阅读 · 2 评论 -
Flink Stream日志写入Kafka集群
Flink Stream日志写入Kafka集群Flink Stream的输出日志,直接输出的Kafka集群,进行持久化。一、log4j.properties文件配置log4j.rootLogger=INFO,file,kafkalog4j.logger.org.apache.kafka=INFO#############################################...原创 2019-10-31 12:41:14 · 1342 阅读 · 0 评论 -
Flink Table 将kafka流数据追加到Csv格式文件
Flink Table 将kafka流数据追加到Csv格式文件Flink Table可以很好的将Stream数据直接写入到文件系统。示例如下:代码示例public class SqlSinkFileSystemStream { public static void main(String[] args) throws Exception { StreamExecuti...原创 2019-10-31 12:41:33 · 3429 阅读 · 0 评论 -
Flink Table 基于Processing Time、Event Time的多种Window实现
Flink Table 基于Processing Time、Event Time的多种Window实现Flink 提供了Table Api,用来统一批流入口,使用Flink Table Api,直接处理流,会特别的简洁,易用。下面来看下使用Flink Table Api实现 Tumble Window(翻滚窗口)、Slide Window(滑动窗口)、Session Window(会话)。一...原创 2019-10-31 12:41:22 · 3502 阅读 · 2 评论 -
Flink DataStream之Kafka数据写入HDFS,并分区到Hive
Flink DataStream之Kafka数据写入HDFS,并分区到Hive因业务要求,我们需要从Kafka中读取数据,变换后最终Sink到业务的消息队列中,为保证数据的可靠性,我们同时对Sink的结果数据,进行保存。最终选择将流数据Sink到HDFS上,在Flink中,同时也提供了HDFS Connector。下面就介绍如何将流式数据写入HDFS,同时将数据load到Hive表中。一、po...原创 2019-10-31 12:41:05 · 8751 阅读 · 2 评论 -
Flink DataStream Async I/O(异步IO)
Flink DataStream Async I/O(异步IO)当我们在Operator算子中,需要与外部系统交互时(例如:查询数据库),如果我们使用同步的方式,那么容易造成该Operator计算延迟,吞吐量低。所以Flink 提供了Async I/O机制,可以通过异步操作,处理查询数据库等类似耗时的操作。与数据库的异步交互意味着单个并行函数实例可以同时处理许多请求并同时接收响应。这样,等待时...原创 2019-10-31 12:40:51 · 2036 阅读 · 0 评论 -
Flink DataStream KeyedProcessFunction实现类似Session Window功能
Flink DataStream KeyedProcessFunction实现类似Session Window功能一、KeyedProcessFunction功能介绍KeyProcessFunction是一个低级的Stream处理操作(Operator),可以更加灵活的处理Stream的业务逻辑,它可以访问所有流应用程序的基本构建块:事件(Event)状态(State,仅支持KeyedS...原创 2019-10-31 12:40:41 · 2623 阅读 · 0 评论 -
Flink DataStream Evictors(驱逐器)
Flink DataStream Evictors(驱逐器)Flink 窗口模式允许特别的算子Evictor(驱逐器),应用在WindowAssigner和trigger之间。通过evictor()方法使用。Evictor驱逐器能够在element进入Window窗口聚合之前进行移除数据或者在进入Window窗口聚合后,Trigger触发计算操作之前移除数据。Evictor的2个方法:...原创 2019-06-28 16:05:15 · 1529 阅读 · 0 评论 -
Flink DataStream Trigger触发器
Flink DataStream Trigger触发器触发器是指当Window(window 分配器产生)窗口准备通过WindowFunction计算时触发。每一个Window分配器都会有一个默认的Trigger(触发器)。如果默认的Trigger(触发器)不满足你的需要,你可以自定义触发器。触发器的方法触发器的有4个抽象方法,2个具有实现方法。抽象方法:onElement():每个...原创 2019-06-28 16:04:30 · 2992 阅读 · 0 评论 -
Flink Checkpoint(检查点)
Flink Checkpoint(检查点)Flink中的每个函数和运算符都可以是有状态的(如果是Keyed Stream,使用ValueState、ListState等状态,如果是Operator State,实现CheckpointedFunction或CheckpointedList接口。使用ListState、MapState获取状态)。有状态的函数在各个元素/事件处理中存储数据。使状态成...原创 2019-10-31 12:40:29 · 2747 阅读 · 0 评论 -
Flink DataStream Window
Flink DataStream WindowWindows是处理无限流的核心。Windows将流拆分为有限大小的"桶",这样可以在Window中进行聚合操作。窗口的生命周期:一般当第一个元素到达时,创建窗口,当(处理时间或事件时间)时间大于等于其结束的时间,窗口进行触发计算,计算结束后,窗口将完全删除。1. Window的分类Window可以分为2类,分别为:Keyed Windows(...原创 2019-10-31 12:40:20 · 1211 阅读 · 1 评论 -
Flink DataStream WaterMark
Flink DataStream WaterMark为了处理事件时间,Flink需要知道事件的时间戳,这意味着流中的每个元素都需要分配其事件时间戳。这通常通过从元素中的某个字段访问/提取时间戳来完成。时间戳分配与生成水印密切相关,水印告诉系统事件时间的进展。1.生成Watermark的两种方式1.1 在数据源(source)中生成WaterMarkpublic class WaterMa...原创 2019-06-27 17:29:32 · 745 阅读 · 1 评论 -
Flink DataStream iterate算子的简单使用
Flink DataStream iterate算子的简单使用由于DataStream程序可能永远不会完成,因此没有最大迭代次数。相反你需要指定流的哪个部分反馈到迭代,哪个部分使用split转换或转发到下游filter。下面看示例:public class IterateOperator { public static void main(String[] args) throws...原创 2019-06-27 14:41:42 · 2766 阅读 · 2 评论 -
Flink DataStream unoin与connect的区别
Flink DataStream unoin与connect的区别Flink DataStream中union和connect都有一个共同的作用,就是将2个流或多个流合成一个流。但是两者的区别是:union连接的2个流的类型必须一致,connect连接的流可以不一致,但是可以统一处理。具体看下面示例:public class ConnectOperator { public sta...原创 2019-06-27 14:40:36 · 3592 阅读 · 0 评论 -
Flink DataStream Join && IntervalJoin && coGroup的区别
Flink Stream join && intervalJoin && coGroup的区别Flink DataStream Api提供了3中Stream join的算子,分别是join,intervalJoin和coGroup算子。join:是一个流join另一个流,需要设置窗口,2个流join需要的key字段。使用的是innerJoin。对Processi...原创 2019-06-27 14:39:43 · 2810 阅读 · 0 评论