在 在 Windows 10 中安装和设置 Spark 开发环境 中,我们在 Windwos 中搭建了 Spark 的单机环境以方便开发调试。本文就是在这套环境的基础上演示如何使用 Spark 的 Java API 进行开发。当然,这只是一个简单的入门案例。
本文参考了 Spark 官方的案例。
在搭建好 Spark 的环境后, 我们使用如下的软件来进行 Spark 应用的开发:
- JDK: Java 8
- IDE: IDEA Intellij 社区版就可以
建立一个 maven 项目
打开 IDEA, 新建一个普通的 maven 项目, 建好以后,打开项目中的 pom.xml 文件,
首先添加 Spark 依赖库,内容如下:
1 | <dependencies> |
因为我们在那里中会使用 Java 8的特性,所以需要添加对 Java 8 的支持,内容如下:
1 | <build> |
编写 Java 类
在项目中新建一个名为: SimpleApp 的类,该类包含 main 方法,所以可以被直接执行。然后类中编写以下内容:
1 | import org.apache.spark.SparkConf; |
我们简单的解释以下程序的内容,
1 | SparkConf conf = new SparkConf().setAppName("Simple Application"); |
这两句代码是为了构建一个 SparkContext, 在上面代码给定的 SparkConf 条件中, JavaSparkContext 会自动通过当前环境中的环境变量 SPARK_HOME 找到需要的 Spark 安装包并启动一个 Spark 运行实例。
1 | JavaRDD<String> logData = sc.textFile(logFile).cache(); |
这行代码声明了一个弹性数据集,内容来自于 logFile。
1 | long numAs = logData.filter(new Function<String, Boolean>() { |
这几行代码基于弹性数据集进行了一个简单的运算,首先是一个 filter 操作,该操作需要根据特定的筛选条件对数据进行筛选,而这个特定的筛选条件被封装到了接口 Function 中。
1 | long numBs = logData.filter(s -> { |
这几行代码使用了 Java 8 中的 Lambda 表达式简化了代码,功能和计算 numAs 的代码是一样的。
运行程序
在 IDEA 中选择运行,会弹出配置对话框,在对话框中选择 SimpleApp 作为启动程序, 然后在 VM options 选择中填入: -Dspark.master=local 以指名启用本地安装的 Spark
配置好后,就可以运行程序, 如果运行正常,会得到类似如下的结果(输出):
1 | Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties |