以Apache Spark为基础,在独立模式下运行

我将尝试在独立运行Apache Spark。

↑你是指公式中的「独立应用程序」吧。

要执行Spark应用程序,

spark-submit

听起来需要使用这个命令。
需要注意的是,在执行之前需要将应用程序编译并打包成jar文件。

那么,我将尝试执行。

环境等

・Mac OS X 10.8.5
・Apache Spark使用的版本是spark-1.1.1-bin-hadoop2.4
・使用的编程语言是Scala(v2.11.4)
・应用程序的编译使用的是sbt工具(v0.13.7)

我已经按照下面的方法尝试安装了scala和sbt。
http://qiita.com/kanuma1984/items/6f599c815cc8f9232228

在没有连接的情况下执行

首先创建一个用于样本的目录。

$ cd /tmp
$ mkdir spark-sample
$ mkdir spark-sample/src
$ mkdir spark-sample/src/main
$ mkdir spark-sample/src/main/scala

接下来我们要创建一个用于包管理的sbt文件,并写入以下内容。

name := "Simple Project"
version := "1.0"
scalaVersion := "2.10.4"
libraryDependencies += "org.apache.spark" %% "spark-core" % "1.1.1"

在这里遇到了一个问题,就是如果指定了scalaVersion为安装的版本(2.11.4),在编译时会出现错误。

是不是因为Spark不支持Scala 2.11.4才导致的呢?
按照官方文档指定了2.10.4后,它正常运行了。唉,还有很多谜团啊,我真是不知所措。

下一个是应用程序。

/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConf

object SimpleApp {
  def main(args: Array[String]) {
    val logFile = "/tmp/spark-1.1.1-bin-hadoop2.4/README.md"
    val conf = new SparkConf().setAppName("Simple Application")
    val sc = new SparkContext(conf)
    val logData = sc.textFile(logFile, 2).cache()
    val numAs = logData.filter(line => line.contains("a")).count()
    val numBs = logData.filter(line => line.contains("b")).count()
    println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))
  }
}

这是一个在官方文档中的示例,README.md文件中的样例,其功能是计算并输出字符串”a”和”b”在文档中出现的次数。

在执行之前,我们将对其进行编译。
我们会使用sbt命令,不过一开始可能会花费很多时间。
我们可以一边慢慢喝茶一边等待。

$ cd /tmp/spark-sample
$ sbt package

这个错误是在这个时间点上发生的scalaVersion错误。

终于可以执行了。

进行

使用spark-submit来进行执行。

/tmp/spark-1.1.1-bin-hadoop2.4/bin/spark-submit \
  --class "SimpleApp" \
  --master local[4] \
  target/scala-2.10/simple-project_2.10-1.0.jar
・
・
・
Lines with a: 83, Lines with b: 38

已经得到了a出现83次,b出现38次的结果。
关于spark-submit的选项,

# 作成したアプリケーションのエントリーポイント
--class "SimpleApp" 

# ローカル環境で実行し、[]の中がワーカースレッド数
--master local[4]

# ↓の場合は、ローカル・1ワーカースレッドになります
--master local

# sbtによってコンパイルされたプログラムのjarを指定
target/scala-2.10/simple-project_2.10-1.0.jar

请指正我有错误的地方。

现在独立运行已经结束了。
接下来可以尝试实现使用Twitter API的事情。

请引用以下内容:

https://spark.apache.org/docs/latest/quick-start.html 可以在此找到最新的Spark快速入门指南。
https://spark.apache.org/docs/1.1.0/submitting-applications.html 可以在此找到有关Spark应用程序提交的文档。
https://spark.apache.org/docs/1.1.0/submitting-applications.html#master-urls 可以在此找到有关Spark应用程序提交的文档,包括主节点URL的详细信息。

bannerAds