独立应用程序(Self-Contained Applications)python
如今基于一个简单的APP,经过 Spark API 编写一个独立应用程序。shell
使用 Scala 编写的程序须要使用 sbt 进行编译打包,相应的,Java 程序使用 Maven 编译打包,而 Python 程序经过 spark-submit 直接提交。apache
PS:好像spark2.0支持RDD之外的一种数据集(DataSets), 对python处理的性能有很大提高,几乎与scala性能旗鼓至关。vim
cd ~ # 进入用户主文件夹mkdir ./sparkapp # 建立应用程序根目录mkdir -p ./sparkapp/src/main/scala # 建立所需的文件夹结构
./sparkapp/src/main/scala 下创建一个名为 SimpleApp.scala 的文件:app
/* SimpleApp.scala */import org.apache.spark.SparkContextimport org.apache.spark.SparkContext._import org.apache.spark.SparkConf object SimpleApp { def main(args: Array[String]) { val logFile = "file:///usr/local/spark/README.md" // Should be some file on your system 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)) }}
该程序计算 /usr/local/spark/README 文件中包含 “a” 的行数 和包含 “b” 的行数。ide
程序依赖 Spark API,所以咱们须要经过 sbt 进行编译打包。oop
vim ./sparkapp/simple.sbt
添加:性能
name := "Simple Project"version := "1.0"scalaVersion := "2.10.5"libraryDependencies += "org.apache.spark" %% "spark-core" % "1.6.1"
文件 simple.sbt 须要指明 Spark 和 Scala 的版本。ui
启动 Spark shell 的过程当中能够看到 spa
安装sbt
sudo mkdir /usr/local/sbtsudo chown -R hadoop /usr/local/sbt cd /usr/local/sbt
cp /home/yuan/Downloads/sbt-launch\ \(1\).jar /usr/local/sbt/sbt-launch.jar
chmod u+x ./sbt
./sbt sbt-version
参考/转载:http://www.powerxing.com/spark-quick-start-guide/