- 博客(50)
- 收藏
- 关注

原创 如何用Spark实现一个通用大数据引擎
Github 上的开源项目 Waterdrop,此项目Star + Fork的有将近1200人,是一个基于Spark和Flink构建的生产环境的海量数据计算产品。Waterdrop的特性包括简单易用,灵活配置,无需开发;同时支持流式和离线处理;模块化和插件化,易于扩展;支持利用SQL做数据处理和聚合;支持选择Spark或Flink作为底层引擎层。作为 Spark 或者 Flink 的开发者,你是否也曾经想过要打造这样一款通用的计算引擎,是是否曾经有这样的疑问,Waterdrop为什么能实现这
2020-06-03 22:44:47
981

原创 从Flink上谈当今实时流处理
0. 序 在当前数据量激增传统的时代,不同的业务场景都有大量的业务数据产生,对于这些不断产生的数据应该如何进行有效地处理,成为当下大多数公司所面临的问题。但随着数据的不断增长,新技术的不断发展,人们逐渐意识到对实时数据处理的重要性,企业需要能够同时支持高吞吐、低延迟、高性能的流处理技术来处理日益增长的数据。相对于传统的数据处理模式,流式数据处理则有着更高的处理效率和成本控制。Apach...
2020-04-27 15:53:13
1088

原创 Waterdrop推动Spark Structured Streaming走向生产环境
前言StructuredStreaming是Spark 2.0以后新开放的一个模块,相比SparkStreaming,它有一些比较突出的优点:它能做到更低的延迟;可以做实时的聚合,例如实时计算每天每个商品的销售总额;可以做流与流之间的关联,例如计算广告的点击率,需要将广告的曝光记录和点击记录关联。以上几点如果使用SparkStreaming来实现可能会比较麻烦或者说是很难实现,但是使...
2019-04-16 08:59:25
1180
6

原创 ElasticSearch pinyin分词支持多音字
ElasticSearch pinyin分词支持多音字背景我们有一个搜索业务底层采用ElasticSearch作为搜索引擎,在索引的过程中,使用了ik中文分词、拼音分词、同义词等多种分词器。ES和各种插件的组合已经能满足我们线上90%的需求,但是仍有部分需求无法覆盖,我们在拼音分词的时候过程中就遇到了无法解决的问题。比如在 三一重工 中,一重 这个词在拼音词库 polyphone.txt 中...
2019-03-28 19:29:06
4072
2

原创 如何使用Spark快速将数据写入Elasticsearch
如何使用Spark快速将数据写入Elasticsearch说到数据写入Elasticsearch,最先想到的肯定是Logstash。Logstash因为其简单上手、可扩展、可伸缩等优点被广大用户接受。但是尺有所短,寸有所长,Logstash肯定也有它无法适用的应用场景,比如:海量数据ETL海量数据聚合多源数据处理为了满足这些场景,很多同学都会选择Spark,借助Spark算子进行数据...
2018-12-11 23:57:23
9466

原创 如何快速地将Hive中的数据导入ClickHouse
如何快速地将Hive中的数据导入ClickHouseClickHouse是面向OLAP的分布式列式DBMS。我们部门目前已经把所有数据分析相关的日志数据存储至ClickHouse这个优秀的数据仓库之中,当前日数据量达到了300亿。在之前的文章如何快速地把HDFS中的数据导入ClickHouse中我们提到过使用Waterdrop——https://github.com/InterestingL...
2018-11-28 23:17:21
14098
3

原创 如何快速地把HDFS中的数据导入ClickHouse
如何快速地把HDFS中的数据导入ClickHouseClickHouse是面向OLAP的分布式列式DBMS。我们部门目前已经把所有数据分析相关的日志数据存储至ClickHouse这个优秀的数据仓库之中,当前日数据量达到了300亿。之前介绍的有关数据处理入库的经验都是基于实时数据流,数据存储在Kafka中,我们使用Java或者Golang将数据从Kafka中读取、解析、清洗之后写入ClickH...
2018-11-07 17:12:07
19486
原创 Golang Benchmark Test
内部程序是CPU密集型计算,因此编写了 Benchmark 测试算子的性能,并且希望在此基础上,将 Benchmark 在各服务器上执行,验证服务器性能情况。Benchmark 编译go test -c -test.bench=".*" ./filter/执行后将在本地生成 filter.testBenchmark 运行首先在目标服务器上将编译好的二进制文件拉取到本地。./...
2020-04-24 10:15:15
848
原创 Elasticsearch深度分页问题以及Scroll查询的一些总结
背景介绍我们在 Elasticsearch API的基础上实现了一个日志查询系统,支持最基本的时间范围选择以及关键词搜索高亮,并且日志展示的表格支持异步分页。有天用户反馈,查询的时候页面报错Result window is too large, from + size must be less than or equal to: [10000] but was [24600]. See th...
2020-01-09 15:11:18
1312
原创 优秀的数据工程师,怎么用Spark在TiDB上做OLAP分析
优秀的数据工程师,怎么用Spark在TiDB上做OLAP分析TiDB 是一款定位于在线事务处理/在线分析处理的融合型数据库产品,实现了一键水平伸缩,强一致性的多副本数据安全,分布式事务,实时 OLAP 等重要特性。TiSpark 是 PingCAP 为解决用户复杂 OLAP 需求而推出的产品。它借助 Spark 平台,同时融合 TiKV 分布式集群的优势。直接使用 TiSpark 完成 O...
2019-02-18 22:25:25
1660
原创 怎么在MacOS上使用sbt发布代码到Maven中央仓库
怎么在MacOS上使用sbt发布代码到Maven中央仓库在项目中集成sonatype这一部分不是本篇文章的重点,在项目集成sonatype可参照https://github.com/xerial/sbt-sonatype配置上传代码1. 安装gpg并生成密钥brew install gpggpg --gen-key# 输入用户名,邮箱和密码gpg --list-keypub ...
2019-01-29 15:09:49
676
原创 Gitlab CI集成工具的应用
Gitlab CI集成工具的应用什么是Gitlab CI工具Continuous Integration is a software development practice in which you build and test software every time a developer pushes code to the application, and it happens s...
2019-01-10 15:38:30
698
原创 Dataset 使用填坑记录
Dataset 使用填坑记录Dataset被誉为懒人数据库(databases for lazy people),是Python操作MySQL的库。因为其简单的操作,避开了繁琐的依赖安装和链接建立,能够很快的和数据库进行交互。但是在使用过程中,遇到了不少的坑,这篇文章旨在记录使用过程中遇到的坑,避免下次再犯浪费时间。连接不释放使用Dataset连接MySQL,连接不会主动释放,这样会导致表结...
2018-11-12 19:20:31
631
原创 [Leetcode-228]Python-Summary-Ranges-滑动窗口
Overview给定一个无重复元素的有序整数数组,返回数组区间范围的汇总。。示例 1:输入: [0,1,2,4,5,7]输出: ["0->2","4->5","7"]解释: 0,1,2 可组成一个连续的区间; 4,5 可组成一个连续的区间。示例 2:输入: [0,2,3,4,6,8,9]输出: ["0","2->4","6&
2018-08-14 21:51:39
420
原创 Elasticsearch Rolling up historical data Overview
Elasticsearch Rolling up historical dataOverview And while we continue to believe that most data tends to have value over a long period of time, the relative value of the data can decrease as ...
2018-08-08 11:14:29
1256
原创 [Leetcode-66]Python-Plus One-三行代码
Overview给定一个非负整数组成的非空数组,在该数的基础上加一,返回一个新的数组。最高位数字存放在数组的首位, 数组中每个元素只存储一个数字。你可以假设除了整数 0 之外,这个整数不会以零开头。示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: ...
2018-08-04 21:45:39
335
原创 Python List VS Set
Python List VS SetOverviewSets are significantly faster (almost O(1)) when it comes to determining if an object is present in the set (as in x in s), but are slower than lists when it comes to i...
2018-08-03 21:35:39
242
原创 Elasticsearch 6.3 X-PACK SQL Overview
Elasticsearch 6.3 X-PACK SQL Overview Elasticsearch SQL aims to provide a powerful yet lightweight SQL interface to Elasticsearch写在前面 However the backing engine itself is Elasticsearch fo...
2018-08-02 17:33:46
4945
原创 Flume 1.8.0读取Kafka写HDFS
Flume 1.8.0读取Kafka写HDFS环境准备java version “1.8.0_45”Hadoop 2.6.0-cdh5.5.1安装Flumewget http://mirrors.tuna.tsinghua.edu.cn/apache/flume/1.8.0/apache-flume-1.8.0-bin.tar.gztar -xvf apache...
2018-07-25 16:14:24
1137
原创 Python中List遍历的若干种方法
List 遍历的4种方法:方法1:for i in list: print i方法2:for i in range(len(list)): print i, list[i]方法3:for i in xrange(len(list)): print i, list[i]方法4:for i, j in enumerate(list...
2018-07-20 14:18:59
26812
2
原创 记一次由于__consumer_offset导致的Kafka故障
记一次Kafka故障 2018.05.30 Kafka 0.10.0.10背景介绍因Kafka集群中一个节点宕机,因集群高可用机制集群工作正常,但是发现部分消费者无法读取到数据故障原因Kafka将直连Kafka的消费信息记录到了__consumer_offset这个topic中,这个topic在我们的集群中复制因子为1,并且所有的Partition落在了...
2018-05-30 15:38:46
7494
原创 ClickHouse JDBC插入性能测试(基于Hangout)
ClickHouse Format Performance TEST of JDBC前言Hangout-output-Clickhouse目前支持3种形式的数据插入,Values、JSONEachRow以及TabSeparated。这三种方式最终插入SQL如下Valuesinsert into db.table (date, datetime, domian, uri,...
2018-03-21 11:33:52
23268
转载 Waterdrop帮你快速玩转Spark数据处理
Waterdrop帮你快速玩转Spark数据处理 屠龙宝刀,宝刀屠龙,踏遍天下,谁敢不从,倚天不出,谁与争锋!Databricks 开源的 Apache Spark 对于分布式数据处理来说是一个伟大的进步。我们在使用 Spark 时发现了很多可圈可点之处,我们在此与大家分享一下我们在简化Spark使用和编程以及加快Spark在生产环境落地上做的一些努力。一个Spark Str...
2018-02-28 09:37:06
22099
原创 Zookeeper一次故障处理
记录一次线上Zookeeper故障 2018.02.06部门引入了ClickHouse作为数据分析仓库,并且使用了复制表ReplicatedMergeTree,两个集群复制表的数据同步依赖Zookeeper,上线前就对Zookeeper的性能产生过顾虑,但是线上运行一段时间后,未发现异常。直到最近几周,故障频现,本文主要记录故障处理过程以及故障处理的一些思考和坑。第一次故障...
2018-02-08 12:09:40
18170
3
原创 Hangout with ClickHouse
当我们部门发现了ClickHouse这么一个优秀数据存储仓库后,经过了一段时间的摸索测试,就把线上大部分与数据分析相关的业务迁移到了ClickHouse上。这篇文章将会介绍我们如何通过Kafka接入Nginx日志到ClickHouse中。当然,其他的应用日志也可以参照以下逻辑将数据接入ClickHouse。我们最初使用Python脚本清洗日志写入ClickHouse,但是这样开发和维护都有一定的成本
2017-12-27 16:25:12
13607
2
原创 使用hangout将Kafka数据实时清洗写入ClickHouse
使用hangout将Kafka数据实时清洗写入ClickHouse什么是HangoutHangout可以说是JAVA版的Logstash,可以进行数据收集、分析并且将分析后的结果写入指定的地方 项目地址什么是ClickHouseClickHouse是一个数据分析的数据库,由Yandex开源 项目地址什么是hangout-output-clickhouseha...
2017-12-11 12:09:17
18320
4
原创 AJAX跨域问题小结
什么是AJAX跨域?AJAX 是无需刷新前端页面就能够从服务器取数据的一种方法,负责Ajax运作的核心对象是XMLHttpRequest(XHR)对象。同源策略是对XHR的一个主要约束,它为通信设置了“相同的域、相同的端口、相同的协议”这一限制。 哪些请求属于跨域请求?http://a.com/ 不允许访问 http://b.com(不同域)http://a.com 不允许访问 https:
2017-10-12 09:28:03
515
原创 使用Python和Flask编写Prometheus监控
使用Python和Flask编写Prometheus监控Installationpip install flaskpip install prometheus_clientMetricsPrometheus提供4种类型Metrics:Counter, Gauge, Summary和HistogramCounterCounter可以增长,并且在程序重启的时
2017-07-28 15:38:20
8737
原创 使用Prometheus监控Kafka logsize(kafka-logsize-exporter)
kafka-logsize-exporter 项目源码githubInstallation下载项目并解压Getting Startedpip install -r requirements.txtvim cluster.conf# 集群别名[kafka1003]# zookeeper地址zk = 127.0.0.1:2128/kafka1003# kafka集群,多个节点用逗号',
2017-07-27 15:05:40
1643
原创 Scala如何处理(多级)JSON字符串
Scala如何处理(多级)JSON字符串1.JSON.parseFull简单JSON格式import scala.util.parsing.json.JSONval jsonStr = """{"username":"Ricky", "age":"21"}"""val jsonValue = JSON.parseFull(jsonStr)val jsonObj = jsonValue match
2017-07-26 18:56:43
6710
原创 Spark on Mesos集群部署
Spark on Mesos集群部署1.安装Mesos安装最新版的Mesosrpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpmyum install mesos安装指定版本Mesos找到指定Mesos版本的RPM包地址下载安装Mesoswget http://repo
2017-05-09 16:51:21
1962
原创 Spark API Java编程使用方法
Spark API Java编程使用方法如何使用mapUse lambda syntaxJavaDStream<String> lines = messages.map(s -> s.substring(0, 5))Implement the Function interfaces// Function[T1, R]JavaDStream<String> lines = messages.
2017-03-03 17:28:43
3940
原创 Spark on Yarn开发运维过程中遇到的问题汇总
Spark on Yarn开发运维过程中遇到的问题汇总启动nodemanager报错 No space left on device 使用df -h命令判断nodemanager运行日志和启动日志磁盘空间是否足够。使用pyspark读取kafka对应topic数据报错java.lang.NoClassDefFoundError: org/apache/kafka/common/message
2017-02-10 15:38:04
1853
原创 Elasticsearch query_string语法查询
Elasticsearch query_string语法查询1.根据字段名查询(Field names)接口(interface)为app interface: app接口(interface)为app或live interface: (app OR live)精确匹配, 接口是app interface: “app”2.通配符(Fuzziness)‘?’表示单个字符,’*’表示0个或
2016-12-14 16:03:25
9488
原创 Elasticsearch CURL操作方法
Elasticsearch curl操作_cat操作curl localhost:9200/_cat=^.^=/_cat/allocation/_cat/shards/_cat/shards/{index}/_cat/master/_cat/nodes//获得集群的所有节点/_cat/indices//获得集群所有的index/_cat/indices/{index}/_ca
2016-12-01 16:57:43
2762
转载 Django自定义用于Views的装饰器
Django自定义用于Views的装饰器不带参数的装饰器from functools import wraps def object_does_not_exist(func): @wraps(func) def returned_wrapper(request, *args, **kwargs): try: return fu
2016-10-09 15:22:27
4163
原创 Spark Streaming从1.4.1升级至2.0.0-preview遇到的问题汇总
Spark Streaming从1.4.1升级至2.0.0-preview遇到的问题汇总Spark Streaming
2016-09-28 10:06:41
2330
原创 在Django中如何正确完整地删除一个App
在Django中如何正确完整地删除一个App1.删除models.py无论是删除一个单独的model还是删除整个App,都需要首先删除models.py文件中的模型。确认没有其他文件引用models.py中的类。迁移或者删除你的数据库,Django提供了简便的方法方便用户删除某App下的所有数据(Django 1.7)。./manage.py migrate your_app_name zero
2016-09-27 13:41:46
24903
原创 Django中url模板使用总结
Django中url模板使用总结1.简单正则匹配使用方法 template.html<a href="{% url 'list_delete' i.id %}">删除</a><a href="{% url 'list_modify' i.id %}">修改</a>urls.pyurl(r'^index/list_delete/(?\d+)/$',list_delete,name='list_d
2016-09-23 09:51:39
11200
原创 Linux下使用命令行获取网页截图
Linux下使用命令行获取网页截图环境准备Linxu系统 centos 7Python Version Python 2.7.5Git Version 1.8.3.1安装Python-webkit2png[Git地址]git clone https://github.com/adamn/python-webkit2png.gitcd python-webkit2pngpython
2016-08-03 09:50:37
3908
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人