如何从IDEA提交任务到Spark,并查看任务执行结果
1.创建程序
打开IDEA——选择Maven项目——在下面找到scala22
2.IDEA程序如下
package com.demo
import org.apache.spark.SparkContext
import org.apache.spark.SparkConf
import org.apache.log4j.{Level,Logger}
object HelloWorld {
def main(args:Array[String]): Unit = {
//屏蔽日志
// Logger.getLogger(“org.apache.spark”).setLevel(Level.WARN)
// Logger.getLogger(“org.eclipse.jetty.server”).setLevel(Level.OFF)
//test.txt文件里包含了hello world行,读者可自己修改测试
val inputfile="file:///home/wangyang/helloSpark.txt"
val conf = new SparkConf().setAppName("HelloWorld").setMaster("spark://192.168.124.59:7077")
val sc = new SparkContext(conf)
val textfile = sc.textFile(inputfile)
//查询包含hello world的行
val lines = textfile.filter(line => line.contains("helloworld"))
lines.foreach(println)
}
bulid.sbt依赖(视情况自己修改)
name := “FirstSpark”
version := “0.1”
scalaVersion := “2.11.0”
libraryDependencies += “org.apache.spark” %% “spark-core” % “2.4.0”
3.打成jar包
4.使用rz命令将jar包以及要读的文件其上传到服务器上
5.提交运行
spark-submit --master spark://localhost:7077
/home/wangyang/FirstSpark.jar
其中最后一项是你的jar包位置
6.查看运行日志
192.168.124.59:8080 sdout不一定在三台服务器哪一台上有显示
7.若运行报文件未找到的错
关于在Spark集群中读取本地文件抛出找不到文件异常的问题
一般情况下,我们在本地ide里写好程序,打成jar包上传到集群取运行,有时候需要读取数据文件,这个时候需要注意,如果程序中读取的是本地文件,那么,要在所有的节点都有这个数据文件,只在master中有这个数据文件时执行程序时一直报找不到文件
解决方式1:让每个Worker节点的相应位置都有要读取的数据文件。
解决方式2:直接将数据文件上传到hdfs,达到数据共享。(强烈推荐,比格更高更专业)