Scalding 开源项目使用教程
scaldingA Scala API for Cascading项目地址:https://gitcode.com/gh_mirrors/sc/scalding
1. 项目的目录结构及介绍
Scalding 是一个用于大数据处理的 Scala 库,基于 Twitter 的 Cascading 框架。以下是 Scalding 项目的主要目录结构及其介绍:
scalding/
├── build.sbt # SBT 构建文件
├── project/ # SBT 项目配置目录
├── README.md # 项目说明文档
├── scalding-core/ # 核心库
│ ├── src/ # 源代码
│ │ ├── main/ # 主代码
│ │ │ ├── scala/ # Scala 代码
│ │ │ └── resources/ # 资源文件
│ │ └── test/ # 测试代码
│ └── build.sbt # 子项目构建文件
├── scalding-date/ # 日期处理库
├── scalding-args/ # 参数解析库
├── scalding-commons/ # 通用库
├── scalding-repl/ # REPL 工具
├── scalding-parquet/ # Parquet 支持
├── scalding-avro/ # Avro 支持
├── scalding-jackson/ # Jackson 支持
├── scalding-thrift/ # Thrift 支持
├── scalding-protobufs/ # Protocol Buffers 支持
├── scalding-hadoop-test/ # Hadoop 测试工具
└── examples/ # 示例代码
2. 项目的启动文件介绍
Scalding 项目的启动文件通常是一个 Scala 脚本,用于定义和运行 MapReduce 作业。以下是一个典型的启动文件示例:
import com.twitter.scalding._
class ExampleJob(args: Args) extends Job(args) {
// 定义数据源
val input = TextLine(args("input"))
val output = Tsv(args("output"))
// 定义数据处理流程
input
.read
.flatMap('line -> 'word) { line: String => line.split("\\s+") }
.groupBy('word) { _.size('count) }
.write(output)
}
在这个示例中,ExampleJob
类继承自 Job
类,并定义了一个简单的单词计数作业。TextLine
和 Tsv
是 Scalding 提供的用于读写文本和 TSV 文件的数据源。
3. 项目的配置文件介绍
Scalding 项目的配置文件通常是 build.sbt
文件,用于配置项目的依赖和构建选项。以下是一个典型的 build.sbt
文件示例:
name := "scalding-example"
version := "0.1.0"
scalaVersion := "2.12.10"
libraryDependencies ++= Seq(
"com.twitter" %% "scalding-core" % "0.17.4",
"org.apache.hadoop" % "hadoop-client" % "2.7.7" % "provided",
"org.scalatest" %% "scalatest" % "3.0.5" % "test"
)
resolvers ++= Seq(
"Concurrent Maven Repo" at "http://conjars.org/repo",
"Twitter Maven Repo" at "https://maven.twttr.com"
)
// 配置打包选项
assemblyMergeStrategy in assembly := {
case PathList("META-INF", xs @ _*) => MergeStrategy.discard
case _ => MergeStrategy.first
}
在这个示例中,build.sbt
文件定义了项目的名称、版本、Scala 版本和依赖库。libraryDependencies
部分列出了项目所需的依赖库,包括 Scalding 核心库和 Hadoop 客户端库。resolvers
部分定义了依赖库的仓库地址。assemblyMergeStrategy
部分定义了打包时的合并策略。
scaldingA Scala API for Cascading项目地址:https://gitcode.com/gh_mirrors/sc/scalding