原文链接 : http://zeppelin.apache.org/docs/0.7.2/interpreter/scalding.html

译文链接 : http://cwiki.apachecn.org/pages/viewpage.action?pageId=10030908

贡献者 : 片刻 ApacheCN Apache中文网

Scalding是一个用于编写MapReduce工作的开源Scala库。

构建Scalding 解释器

您必须首先通过启用烫伤配置文件来构建Scalding解释器,如下所示:

  1. mvn clean package -Pscalding -DskipTests

启用Scalding 解释器

在笔记本电脑,使用Scalding解释器,点击齿轮图标,选择Scalding,并创下保存

Scalding 解释器 - 图1

Scalding 解释器 - 图2

配置解释器

Scalding解释器有两种模式:

  • 本地
  • HDFS
    在本地模式下,您可以访问本地服务器上的文件,并在本地完成Scalding转换。

在hdfs模式下,您可以访问HDFS中的文件,并且烫印转换将以hadoop map-reduce作业运行。

Zeppelin配有预配置的Scalding解释器在本地模式。

要在hdfs模式下运行Scalding解释器,您必须执行以下操作:

使用ZEPPELIN_CLASSPATH_OVERRIDES设置类路径

在conf / zeppelin env.sh中,您必须将ZEPPELIN CLASSPATHOVERRIDES 设置_为“hadoop classpath”的内容,以及使用您的烫伤命令所需的自定义jar文件的目录。

设置Scalding复制的参数

默认参数为:“—local —repl”

对于hdfs模式,您需要添加:“—hdfs —repl”

如果要添加自定义jar,则需要添加:“-libjars directory / :directory /

对于reducer估计,您需要添加以下内容:“-Dscalding.reducer.estimator.classes = com.twitter.scalding.reducer_estimation.InputSizeReducerEstimator”

设置max.open.instances

如果要控制最大数量的打开解释器,您必须为note选项选择“scoped”解释器,并设置max.open.instances参数。

测试解释器

本地模式

例如,通过使用“ 爱丽丝梦游仙境”教程,我们将计算单词(当然!),并绘制书中前十个单词的图形。

  1. %scalding
  2.  
  3. import scala.io.Source
  4.  
  5. // Get the Alice in Wonderland book from gutenberg.org:
  6. val alice = Source.fromURL("http://www.gutenberg.org/files/11/11.txt").getLines
  7. val aliceLineNum = alice.zipWithIndex.toList
  8. val alicePipe = TypedPipe.from(aliceLineNum)
  9.  
  10. // Now get a list of words for the book:
  11. val aliceWords = alicePipe.flatMap { case (text, _) => text.split("\\s+").toList }
  12.  
  13. // Now lets add a count for each word:
  14. val aliceWithCount = aliceWords.filterNot(_.equals("")).map { word => (word, 1L) }
  15.  
  16. // let's sum them for each word:
  17. val wordCount = aliceWithCount.group.sum
  18.  
  19. print ("Here are the top 10 words\n")
  20. val top10 = wordCount
  21. .groupAll
  22. .sortBy { case (word, count) => -count }
  23. .take(10)
  24. top10.dump
  1. %scalding
  2.  
  3. val table = "words\t count\n" + top10.toIterator.map{case (k, (word, count)) => s"$word\t$count"}.mkString("\n")
  4. print("%table " + table)

如果您点击饼图的图标,您应该可以看到如下图表:

Scalding 解释器 - 图3

HDFS模式

测试模式

  1. %scalding
  2. mode

此命令应打印:

  1. res4: com.twitter.scalding.Mode = Hdfs(true,Configuration: core-default.xml, core-site.xml, mapred-default.xml, mapred-site.xml, yarn-default.xml, yarn-site.xml, hdfs-default.xml, hdfs-site.xml)

测试HDFS读取

  1. val testfile = TypedPipe.from(TextLine("/user/x/testfile"))
  2. testfile.dump

此命令应打印hdfs文件/user/x/testfile 的内容。

测试map-reduce job

  1. val testfile = TypedPipe.from(TextLine("/user/x/testfile"))
  2. val a = testfile.groupAll.size.values
  3. a.toList

该命令应该创建一个map reduce作业。

未来的工作

  • 更好的用户反馈(hadoop url,进度更新)
  • 能够取消工作
  • 能够动态加载jar而不重新启动解释器
  • 多用户可扩展性(在不同服务器上运行烫伤解释器)