# Scalding 解釋器
原文鏈接 : [http://zeppelin.apache.org/docs/0.7.2/interpreter/scalding.html](http://zeppelin.apache.org/docs/0.7.2/interpreter/scalding.html)
譯文鏈接 : [http://www.apache.wiki/pages/viewpage.action?pageId=10030908](http://www.apache.wiki/pages/viewpage.action?pageId=10030908)
貢獻者 : [片刻](/display/~jiangzhonglian) [ApacheCN](/display/~apachecn) [Apache中文網](/display/~apachechina)
[Scalding](https://github.com/twitter/scalding)是一個用于編寫MapReduce工作的開源Scala庫。
## 構建Scalding 解釋器
您必須首先通過啟用**燙傷**配置文件來構建Scalding解釋器,如下所示:
```
mvn clean package -Pscalding -DskipTests?
```
## 啟用Scalding 解釋器
在筆記本電腦,使用Scalding解釋器,點擊**齒輪**圖標,選擇Scalding,并創下**保存**。


## 配置解釋器
Scalding解釋器有兩種模式:
* 本地
* HDFS
在本地模式下,您可以訪問本地服務器上的文件,并在本地完成Scalding轉換。
在hdfs模式下,您可以訪問HDFS中的文件,并且燙印轉換將以hadoop map-reduce作業運行。
Zeppelin配有預配置的Scalding解釋器在本地模式。
要在hdfs模式下運行Scalding解釋器,您必須執行以下操作:
**使用ZEPPELIN_CLASSPATH_OVERRIDES設置類路徑**
在conf /?_zeppelin env.sh中,您必須將ZEPPELIN_?CLASSPATH_OVERRIDES?_設置_為“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參數。
## 測試解釋器
### 本地模式
例如,通過使用“?[愛麗絲夢游仙境”](https://gist.github.com/johnynek/a47699caa62f4f38a3e2)教程,我們將計算單詞(當然!),并繪制書中前十個單詞的圖形。
```
%scalding
import scala.io.Source
// Get the Alice in Wonderland book from gutenberg.org:
val alice = Source.fromURL("http://www.gutenberg.org/files/11/11.txt").getLines
val aliceLineNum = alice.zipWithIndex.toList
val alicePipe = TypedPipe.from(aliceLineNum)
// Now get a list of words for the book:
val aliceWords = alicePipe.flatMap { case (text, _) => text.split("\\s+").toList }
// Now lets add a count for each word:
val aliceWithCount = aliceWords.filterNot(_.equals("")).map { word => (word, 1L) }
// let's sum them for each word:
val wordCount = aliceWithCount.group.sum
print ("Here are the top 10 words\n")
val top10 = wordCount
.groupAll
.sortBy { case (word, count) => -count }
.take(10)
top10.dump
```
```
%scalding
val table = "words\t count\n" + top10.toIterator.map{case (k, (word, count)) => s"$word\t$count"}.mkString("\n")
print("%table " + table) ?
```
如果您點擊餅圖的圖標,您應該可以看到如下圖表:?

### HDFS模式
**測試模式**
```
%scalding
mode ?
```
此命令應打印:
```
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讀取**
```
val testfile = TypedPipe.from(TextLine("/user/x/testfile"))
testfile.dump ?
```
此命令應打印hdfs文件/user/x/testfile?的內容。
**測試**map-reduce job****
```
val testfile = TypedPipe.from(TextLine("/user/x/testfile"))
val a = testfile.groupAll.size.values
a.toList ?
```
該命令應該創建一個map reduce作業。
## 未來的工作
* 更好的用戶反饋(hadoop url,進度更新)
* 能夠取消工作
* 能夠動態加載jar而不重新啟動解釋器
* 多用戶可擴展性(在不同服務器上運行燙傷解釋器)
- 快速入門
- 什么是Apache Zeppelin?
- 安裝
- 配置
- 探索Apache Zeppelin UI
- 教程
- 動態表單
- 發表你的段落
- 自定義Zeppelin主頁
- 升級Zeppelin版本
- 從源碼編譯
- 使用Flink和Spark Clusters安裝Zeppelin教程
- 解釋器
- 概述
- 解釋器安裝
- 解釋器依賴管理
- 解釋器的模擬用戶
- 解釋員執行Hook(實驗)
- Alluxio 解釋器
- Beam 解釋器
- BigQuery 解釋器
- Cassandra CQL 解釋器
- Elasticsearch 解釋器
- Flink 解釋器
- Geode/Gemfire OQL 解釋器
- HBase Shell 解釋器
- HDFS文件系統 解釋器
- Hive 解釋器
- Ignite 解釋器
- JDBC通用 解釋器
- Kylin 解釋器
- Lens 解釋器
- Livy 解釋器
- Markdown 解釋器
- Pig 解釋器
- PostgreSQL, HAWQ 解釋器
- Python 2&3解釋器
- R 解釋器
- Scalding 解釋器
- Scio 解釋器
- Shell 解釋器
- Spark 解釋器
- 系統顯示
- 系統基本顯示
- 后端Angular API
- 前端Angular API
- 更多
- 筆記本存儲
- REST API
- 解釋器 API
- 筆記本 API
- 筆記本資源 API
- 配置 API
- 憑據 API
- Helium API
- Security ( 安全 )
- Shiro 授權
- 筆記本 授權
- 數據源 授權
- Helium 授權
- Advanced ( 高級 )
- Zeppelin on Vagrant VM ( Zeppelin 在 Vagrant 虛擬機上 )
- Zeppelin on Spark Cluster Mode( Spark 集群模式下的 Zeppelin )
- Zeppelin on CDH ( Zeppelin 在 CDH 上 )
- Contibute ( 貢獻 )
- Writing a New Interpreter ( 寫一個新的解釋器 )
- Writing a new Visualization (Experimental) ( 編寫新的可視化(實驗) )
- Writing a new Application (Experimental) ( 寫一個新的應用程序( 實驗 ) )
- Contributing to Apache Zeppelin ( Code ) ( 向 Apache Zeppelin 貢獻( 代碼 ) )
- Contributing to Apache Zeppelin ( Website ) ( 向 Apache Zeppelin 貢獻(website) )