本地构建java+scala混合工程:
- 创建maven项目,选择scala-archetype-simpleprojectstructure(也可以空maven项目自己配置)。
- 注意:更改默认生成的scala-version,以及-target:jvm的版本
- 添加scala SDK,注意与Spark对应的版本
- 添加Spark的依赖包(针对需要使用Spark相关包的module导入,也可以用Maven导,我习惯了用本地Spark的jars)
- src/main下手动(依稀记得使用SBT构建的话,不需要手动创建目录)创建java目录并指定为source,test目录同理,创建resources目录【我这里貌似由于模块间的依赖关系,不允许同一module下建2个source,于是我便把java、scala代码放一起了,用包分开】
暂时的依赖关系如下:
测试使用本地win10做driver
代码如下:【仅为测试功能,最简单的WordCount】
PS:注释掉前几行是因为我想把提交运行的代码与计算逻辑的代码分开。
object RemoteWordCount {
def main(args: Array[String]) {
//Logger.getLogger("org.apache.hadoop").setLevel(Level.WARN)
//Logger.getLogger("org.apache.spark").setLevel(Level.WARN)
//val input = "hdfs://host0.com:8020/user/attop/test_data/movies.dat"
//val output = "file:///E:/tmp20180502"
//val master = "spark://host1.com:7077"
//val conf = new SparkConf().setAppName("WordCountScala").setMaster(master)
val conf = new SparkConf().setAppName("WordCountRemote")
val sc = n