以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的详细信息。