Scalding

Cascading 的 Scala API
授权协议 Apache
开发语言 Scala
所属分类 服务器软件、 分布式应用/网格
软件类型 开源软件
地区 不详
投 递 者 庄星汉
操作系统 跨平台
开源组织 Twitter
适用人群 未知
 软件概览

Scalding 是一个 Scala 库简化了 Hadoop MapReduce 作业开发。基于 Cascading 构建。Scalding 跟 Pig 类似,但提供更紧密的 Scala 集成。

Hadoop 是一个统计词(counting words)的分布式系统。这里看 Scalding 如何实现统计词:

package com.twitter.scalding.examples

import com.twitter.scalding._

class WordCountJob(args: Args) extends Job(args) {
  TypedPipe.from(TextLine(args("input")))
    .flatMap { line => tokenize(line) }
    .groupBy { word => word } // use each word for a key
    .size // in each group, get the size
    .write(TypedTsv[(String, Long)](args("output")))

  // Split a piece of text into individual words.
  def tokenize(text : String) : Array[String] = {
    // Lowercase each word and remove punctuation.
    text.toLowerCase.replaceAll("[^a-zA-Z0-9\\s]", "").split("\\s+")
  }
}
 
  • Scalding是对Cascading框架的Scala封装,或者更确切地说是一种函数式封装。看到Cascading的时候你可能会觉得这么麻烦的东西有必要学吗?但是再看看Scalding就会发现,这好像跟写一般的Scala代码也没什么区别……小小的封装带来巨大的改变。MapReduce/Spark这一遍玩下来最大的体会就是——用命令式语言表达函数式的东西真是太费劲了(map/reduce是函数式语言

  • 当我读过一本关于Mahout的非常出色的书《 Mahout In Action》 (这也是机器学习的出色入门)时,其中的一个例子引起了我的注意。 该书的作者使用了著名的K-means聚类算法在stackoverflow.com上寻找相似的参与者,其中相似性的标准是用户投票赞成/反对的问题/答案的作者集合。 用简单的话来说,K-means算法迭代地找到多维空间中彼此靠近的点/矢量的簇。 应用于在St

  • could not read 'https://dl.bintray.com/scalding/generic/waroverlay.gradle' 解决方法 https://dl.bintray.com服务停用了,gradle用waroverlay打war失败 我改成这样就行了,换成scaldingspoon.gradle.WarOverlayPlugin: http://www.yayihou

  • 把你从写繁琐的Map-reduce Job中解放出来,写分布式跟写本地程序没两样,Scala真真代表着先进生产力的方向啊。 好的,今天开始直播基于Scala的Scalding啦,循序渐进地看以下页面:  https://github.com/twitter/scalding#scalding https://github.com/twitter/scalding/wiki/Getting-Star

  • mahout和spark 当我读过一本关于Mahout的非常出色的书《 Mahout In Action》 (这也是机器学习的出色入门)时,其中的一个例子引起了我的注意。 该书的作者使用了著名的K-means聚类算法在stackoverflow.com上寻找相似的参与者,其中相似性的标准是用户对问题的投票/回答的作者的集合。 用简单的话来说,K-means算法迭代地找到多维空间中彼此靠近的点/向量

  • 我试图弄清楚如何为我自己的基于Scalding的项目创建build.sbt文件. 烫发源结构没有build.sbt文件.相反,它有project / Build.scala构建定义. 将我自己的sbt项目与Scalding集成的正确方法是什么,所以我也可以稍后在Eclipse中使用sbt-eclipse插件导入它? 更新: 对于以下代码: import cascading.tuple.Fields

  • 把你从写繁琐的Map-reduce Job中解放出来,写分布式跟写本地程序没两样,Scalding真真代表着先进生产力的方向啊 心动不如行动,赶紧装一个吧 1 安装JDK 2 安装Homebrew ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)" brew update brew doctor 方

  • Java版本 如果在Scala工程中混入Java类导致java版本不match,可能会抛错 java.lang.UnsupportedClassVersionError: XXX Unsupported major.minor version 51.0 在build.sbt中加入 javacOptions ++= Seq("-source", "1.6", "-target", "1.6") 轻松

 相关资料
  • 问题内容: 此处给出的ThreadLocal的目的是,该变量对于任何访问包含ThreadLocal变量的对象的线程都是局部的。将ThreadLocal变量作为类的成员,然后使其成为Thread的局部变量,而不是使Thread本身具有局部变量,这有什么区别? 问题答案: 线程是执行的单元,因此多个线程可以同时执行相同的代码。如果多个线程同时在一个对象/实例上执行,它们将共享实例变量。每个线程都有其自

  • 问题内容: 对于我的项目,我必须创建一个代理AppDelegate,该代理将把调用转发到另一个AppDelegate。 UIApplicationDelegate有一个。我的问题是,为什么我不能这样做: 该代码的问题是。 有人知道为什么吗? 问题答案: 该物业的协议,声明如下: 这意味着它是一个 可选属性 (在某种意义上,“ 不需要请求 实现协议的类 来实现/具有此属性 ”,就像 在Objecti

  • 问题内容: 我正在使用下面的代码将数据发送到TCP服务器。我假设我需要使用正确地指示客户端已完成发送请求。我的假设正确吗?如果不行,请让我知道目的。也感谢我可以做的任何进一步的优化。 客户 服务器 问题答案: 表示客户端已完成通过TCP连接的所有数据发送。它将发送剩余的数据,然后发送终止序列,该序列将完全关闭其OUTGOING连接。无法发送任何进一步的数据,这也将向您的程序表明请求已完全完成。因此

  • 问题内容: 我可以想到的对于Python类的每次使用,我都可以想到另一个同样(可能更多)可接受的解决方案,以实现相同的效果。例如: 在任何情况下,这都是最合适的解决方案吗?如果是这样,在什么情况下? 问题答案: 该函数是惰性的;它仅使用一项所需的内存。另一方面,和惯用法在内存中创建对象的n个副本。对于五个项目,乘法习惯用法可能更好,但是如果必须重复一百万次,您可能会注意到资源问题。 不过,很难想象

  • 问题内容: 目的是什么 如果我们可以简单地写 ? 相同的 和 问题答案: 从JavaDoc方法: API注意:此方法已用作,

  • 问题内容: php具有以下 功能: 它用相应的值替换字符串中的字典键,并且(重要)不替换已经替换的字符串。天真地尝试在python中编写相同的代码: 返回不是我们想要的(再次被替换)。如何更改上述功能,使其行为类似于其php对应项? (如果可能,我希望没有正则表达式的答案)。 Upd:这里有一些很好的答案。我对它们进行了计时,发现对于短弦琴,Gumbo的版本似乎是最快的,而在长弦琴上,胜者是解决方

  • 问题内容: 此方法的意义/目的是什么? 问题答案: 应该返回对象的可打印表示形式,这很可能是创建该对象的 一种 可能方式。请参阅此处的官方文档。对于开发人员而言更多,而对于最终用户而言则更多。 一个简单的例子:

  • 我使用子JPanel构造JScrollPane,然后尝试将JScrollPane添加到父JPanel中,希望有一个可滚动的自定义JPanel。 我有一个大的细白线前面的所有我的组件,他们是没有滚动。有什么想法吗?