Ink's Blog

Less is more

那些容易漏掉的 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......

Akka Study

Akka 用于构建高并发、分布式且具有容错机制的事件驱动型的应用,本文是 Scala Cookbook 一书中 Akka 部分内容的总结。 Akka GuideActor 模型与线程比较,是一种高层次的抽象。说 “高层次的抽象”这句话,就意味着这个东西简单易用,你不需要考虑太多底层的其他东西。所以如果理解了 Actor 模型的原理,就可以专注解决问题,而不需要把注意力放在像线程、锁和共享......

使用 AWS Kinesis 收集流数据

Kinesis 是 AWS 的一项用于收集实时流数据的云服务,类似于 Kafka。Kinesis 收集到的数据可以用于多个方面,例如存到 S3,发到 EMR 作进一步数据分析等等。 Kinesis 的整体架构如下: Kinesis 的基本术语Kinesis Data StreamKinesis Data Stream 实时吸收大量数据、持久存储数据并使这些数据可供使用。其由多个分片组成......

Spark client mode 和 cluster mode 的区别

在使用spark-submit提交Spark任务一般有以下参数: ./bin/spark-submit \ --class <main-class> \ --master <master-url> \ --deploy-mode <deploy-mode> \ --conf <key>=<value> \ ... # ot......

Scala 的 Case Classes 和 Pattern Matching

本文将讲解 Scala 中无处不在的 case class 和 pattern matching,为什么要放在一起讲呢,因为 case class 一般就是和模式匹配一起使用,习惯了用这套组合拳以后就再也不想写 Java 代码了,use less code to show more! Case Classcase class 是指在 class 前面加上 case 关键字,下面是一个例子......

Scala Implicit 详解

Implicit 是 Scala 中一个很重要的特性,开始学习 Scala 之前一直以为它和 Java 差不多,然而真的看一些 Scala 的源码时却发现并没有想象中那么简单,所以准备写几篇文章来详解 Scala 中异于 Java 的特性,就从 Implicit 开始吧。 在我看来,Implicit 做的事情也是 Scala 主要做的事情,那就是代码压缩,减少模块代码,talk is c......