Ink's Blog

Less is more

Spark Streaming 集成 AWS Kinesis

关于 AWS Kinesis 的基本信息可以看我的这篇文章:使用 AWS Kinesis 收集流数据,本文主要讲解 Spark Streaming 如何集成 Kinesis 处理流数据。 配置 Spark Streaming 应用Spark Streaming 集成 Kinesis 的主要代码如下: import org.apache.spark.storage.StorageLevel......

Spark Streaming 常见操作

DStream 的转换操作与 RDD 的差不多,简单的像是 map,flatMap,repartition 我们就不讲了,我们讲几个关键特殊的。 DStream 的转换操作UpdateStateByKey 操作顾名思义,UpdateStateByKey 转换允许你在每个批次都可以对每个键更新他们的状态,至于这个 “状态” 到底是什么,就由我们自己定了,所以首先需要定义两个元素: 定义一......

Spark Streaming Checkpoint

一个 Streaming 应用是一个 007 特工,需要保证 7 * 24 小时的持久运转,因此容错性就极其重要,Spark Streaming 通过在一个具有容错性的存储系统如 HDFS 中设置一些检查信息来从错误中恢复。 什么情况下需要设置 checkpoint?首先我们看一下哪些数据会被 checkpoint,主要有两种类型的数据: 元数据:将定义 Streaming 应用如何计......

Spark Streaming 初见

本文内容是对 Spark Streaming 官方文档的总结,用一个简单的例子来入门 Spark Streaming。 Spark Streaming 是用来处理实时流数据的,所以必然有一个输入和一个输出: Spark Streaming 的内部实现其实还是 Spark core,将接收到的实时流数据分成一个一个很小的批数据进行处理: Spark Streaming 基本的数据结构是......

Scala 的矩阵运算

本文讲解 Scala 中进行矩阵运算的包 breeze 的一些基础操作。 Breeze 是 Scala 中用于线性代数相关数值运算的开源库。 安装首先我们使用 SBT 导入: libraryDependencies ++= Seq( // Last stable release "org.scalanlp" %% "breeze" % &qu......

那些容易漏掉的 Scala 基础

最近重读了一下 Scala Cookbook 来巩固基础,记录一些容易忘记的关键内容。 Scala 中方法和函数的区别举个例子吧,下面是一个方法: def towLower(c: Char): Char = (c.toByte + 32).toChar 下面是与之完全等价的一个函数: val toLower = (c: Char) => (c.toByte + 32).toChar......

使用 Netty 写一个 HTTP Server

前一段时间需要写一个 HTTP Server,之前用 Akka 实现了一个,但是 Netty 更能支撑高并发,连 Spark 2.0 也把 Akka 换成了 Netty 进行网络传输,所以现在再撸一个 Netty 的 Server。 闲话少说,直接开搞,首先将 Netty 加入 sbt: "io.netty" % "netty-all" % "4.1.25.Final" 我们需要定义两个......

Protocol Buffers 了解一下?

Scala 中使用 protocol buffer

本文是学习 Protocol Buffers 时做的笔记,内容来自官方文档,把其中的精华部分提炼出来做了一个总结。 什么是 protocol buffersProtocol buffers 是一种跨语言跨平台可扩展的序列化结构化数据的方式,常用于通信协议、数据存储等等。首先会定义数据应当如何构造,然后使用特殊生成的源代码把结构化的数据写入到各个数据流或者读取出来。甚至可以更新数据结构而不......

Designing Data-Intensive Applications 读书笔记(I)

构建可靠的、可扩展和可维护的应用

17 年听说了这本神书 Designing Data-Intensive Applications,可以说这是一本全面讲解了大数据整个生态的百科全书,之前快速地看过前几章,感觉讲解地很系统而且通俗易懂,但是看到后面开始讲解更多细节性的内容慢慢地有点跟不上节奏了。作为一名数据从业人员感觉很有必要通过这本书把数据系统层面的内容整个做一个了解,所以这次在阅读的过程中会作一些笔记或者说是翻译以加深......

Spark 源码阅读(I)

通过 Spark Submit 提交应用流程分析

提交 Spark 应用的第一步是通过 spark-submit 执行的,本文将会从源码研究整个过程,对源码的详细注释可以查看这里: https://github.com/Trigl/spark 我们用 Spark 自带的 SparkPi 的例子来讲解,我们通过 spark-submit 提交的命令如下: ./bin/spark-submit --class org.apache.spar......