本篇文章,讲解在Windows10下,使用IDEA搭建好的Maven Scala项目进行本地的Spark词频统计的项目开发工作。
数据依然存在于某个盘符文件下,具体看代码,内容是:
apple orange pear banana lemon apple pear peach orange
在上一篇文章中创建好的Module的package下,新建Scala类,选择object形式:
编写代码:
package com.alan import org.apache.spark.{SparkConf, SparkContext} object Test1 { def main(args: Array[String]): Unit = { //创建SparkContext //本地运行,指定2个内核 val conf=new SparkConf().setMaster("local[2]").setAppName("WordCount") //提交运行 //val conf=new SparkConf().setAppName("WordCound"); val sc=new SparkContext(conf) //加载文件 val file=sc.textFile("file:///d:/test/words.txt") //处理 val flatFile=file.flatMap(item=>item.split(" ")) val flatFileMap=flatFile.map(item=>(item,1)) val aggCount=flatFileMap.reduceByKey((curr,agg)=>curr+agg) //得到结果 aggCount.foreach(item=>println(item)) } }
观察代码,可见和Scala交互式在核心上是一致的,只是要自己建一个SparkContext对象。
结果:
异常参考:
1、如果要使用提交运行的方式,运行会报如下异常:
org.apache.spark.SparkException: A master URL must be set in your configuration
这是因为提交任务要告诉Spark运行的模式:
local 本地单线程
local[K] 本地多线程(指定K个内核)
local[*] 本地多线程(指定所有可用内核)
spark://HOST:PORT 连接到指定的 Spark standalone cluster master,需要指定端口
mesos://HOST:PORT 连接到指定的 Mesos 集群,需要指定端口
yarn-client客户端模式 连接到 YARN集群。需要配置 HADOOP_CONF_DIR
yarn-cluster集群模式 连接到 YARN 集群。需要配置HADOOP_CONF_DIR
本次因为是在本地运行,可以编辑环境变量,设置参数:
-Dspark.master=local
2、Exception in thread “main” java.lang.NoClassDefFoundError: scala/Cloneable
Scala版本不对导致,请修改为符合Spark3.1.2的版本,如Scala2.12.5
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)