Scala
张包峰
Distributed Computing
展开
-
Spark简介及其在ubuntu下的安装使用
Spark 是一种与 Hadoop 相似的开源集群计算环境,在性能和迭代计算上很有看点,现在是Apache孵化的顶级项目吧。Spark 由加州大学伯克利分校 AMP 实验室 (Algorithms, Machines, and People Lab) 开发,可用来构建大型的、低延迟的数据分析应用程序。Spark 启用了内存分布数据集,除了能够提供交互式查询外,它还可以优化迭代工作负载。Spark 是在 Scala 语言中实现的,它将 Scala 用作其应用程序框架,而Scala的语言特点也铸就了大部分Spa原创 2013-08-11 01:01:54 · 14291 阅读 · 2 评论 -
Spark实践的阶段性总结
现在处于从3进入4的阶段,而关于Spark的构想,也还有一些东西需要去实践,新的技术需要去调研和了解。大致是有了Spark集群之后,对Mesos和YARN有一个选择问题,从Spark读取另一个Hadoop的HDFS上文件,这件事的网络延迟影响究竟有多大,毕竟现在的情况是hadoop和spark肯定是部署两套机器上,存储节点和计算节点分离,特别是基于Mesos的话,肯定是这种状态。像豆瓣的Dpark可能是和MFS上的数据打交道的,可能会比较好地解决本地化的问题,可能能检测到目标数据存在某个节点上,而把这次任务原创 2013-09-05 16:56:22 · 9746 阅读 · 8 评论 -
Scala开发环境选型: Sublime + sbt + Ensime
今天在Scala开发环境的选择上纠结了比较久,尝试了Scala IDE,IntelliJ IDEA,也尝试了maven + scala-maven-plugin,最终选择投靠sbt,并且选择Sublime作为编辑器,加上sublime-ensime这个插件。Scala IDE & IntelliJ IDEAScala IDE和Eclipse长得差不多,亲切度较高,且加上Maven for Scala插件之后,可以直接创建Scala的maven项目。我下载来的3.0+版本的scala IDE可以直接创建s原创 2013-11-20 20:06:57 · 11625 阅读 · 2 评论 -
初学Scala(1): Scala实现Hash Join
最近看了些Scala相关的内容,写了个简单的hash join。jion过程从数据源读取两个List[List[Any]](),我把所有的操作都放到List容器里进行将两份数据集,hash到自己写的简单的SimpleHashTable里,每次put进去的时候会返回一个Int值,用于记录两份数据占据的bucket number集合由于两份数据都是基于同一个hash方法进行hash的,join具体发生在两个hashTable对应的bucket之间遍历需要进行join的buckets,每对bucket之原创 2013-11-26 19:25:44 · 4561 阅读 · 0 评论 -
Scala开发环境选型(2): vim + NERDTree + scala-dist + tmux
在之前那篇Scala开发环境选型里,使用的是Sublime和一个Ensime插件,抛弃了IDE。尝试了一段时间觉得在没有IDE的情况下也蛮习惯的,所以接下来转移到服务器上,在vim环境编码。还是延续sublime+sbt的思路,在vim下选择了一个树状结构的插件NERDTree,用scala-dist进行scala的语法高亮,最后采用tmux进行分屏,让sbt的~compile、run和console能和vim共存在一个屏幕上,并且可以打开dstat,对cpu,内存等进行实时的监控。搭建起来之后的界面如下图原创 2013-12-03 10:21:41 · 4729 阅读 · 0 评论 -
Scala Learning(1): 使用Pattern Matching表达JSON
这是一个挺能展现Scala编程方式的例子,对正在熟悉Scala这门语言的开发者很有帮助。Representing JSON用Scala来表达JSON(Java Script Object Notation)结构,{ "firstname" : "John", "lastname" : "Smith", "address" : { "street" : "21 2nd Street原创 2015-04-26 19:38:09 · 2183 阅读 · 0 评论 -
Scala Learning(2): map, flatMap, filter与For表达式
本文叙述Collections里最常见的三种操作map, flatMap, filter,与For表达式的关系。List对三种方法的实现map在List的实现:abstract class List[+T] { def map[U](f: T => U): List[U] = this match { case x :: xs => f(x) :: xs.map(f) case原创 2015-04-26 20:12:31 · 4598 阅读 · 0 评论 -
Scala Learning(3): Tail Recursion定义
关于尾递归 ,使用Scala的两个例子展示尾递归的定义和简单实现。例子比较求最大公约数的函数def gcd(a: Int, b: Int): Int = if (b == 0) a else gcd(b, a % b)计算的展开是尾递归的,gcd(14, 21)-> if (21 == 0) 14 else gcd(21, 14 % 21)-> if (false) 14 else gcd(原创 2015-04-29 22:58:13 · 2299 阅读 · 0 评论 -
Scala Learning(4): Currying柯里化的推演
本文展示加法和乘法的两个例子,最后使用MapReduce的思想把两者统一成一个带Currying的表达形式。从high-order functions推演到Currying原始方法def sum(f: Int => Int, a: Int, b: Int): Int = if (a > b) 0 else f(a) + sum(f, a + 1, b)表示从a到b,把每个int做一次f处理,原创 2015-04-30 23:33:15 · 1706 阅读 · 0 评论