Ink's Blog

Less is more

SBT 那些常用的功能

使用 Scala 也很久了,SBT 是最方便的构建工具,但是总是会遇到一些 SBT 引起的奇奇怪怪的问题,今天就好好研究一下 SBT 的常见用法,争取通过本文跨过大部分的坑。 SBT 常见命令clean:移除 target 文件夹下生成的所有文件。 compile:编译 src/main/scala,src/main/java 和项目根目录下的文件。 run:编译代码然后运行项目中的 m......

Apache Calcite 学习

背景Apache Calcite 是一个动态数据管理框架,它包含很多传统数据库具有的组件,但是省略了一些核心功能,如:数据存储、处理数据的算法和存储元数据的仓库。 Calcite 故意剥离出存储和处理数据的业务逻辑,仅仅作为应用和其他数据存储系统的媒介,可以更加容易的创建一个自己的数据库,你所需要做的就是添加数据。 为了解释地更加直观,让我们创建一个 Calcite 的实例然后往里面加一些数......

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 是一种跨语言跨平台可扩展的序列化结构化数据的方式,常用于通信协议、数据存储等等。首先会定义数据应当如何构造,然后使用特殊生成的源代码把结构化的数据写入到各个数据流或者读取出来。甚至可以更新数据结构而不......