今天的你不付昨天的辛苦,今天的辛苦定会拥抱明日的幸福,
每一次的成长,都要给自己以鼓励,每一次的突破,都给自己以信心,万花丛中我不是最美,但我有我的自信
————————————送给一直努力的你
今天的学习:
Spark利用(idea+maven+scala)创建wordcount打包jar并在spark on yarn上运行——Spark的开发
生产中就是这么玩的:
一:我们先用 idea+maven+scala创建wordcount
package g5.learning
import java.net.URI
import org.apache.hadoop.conf.Configuration
import org.apache.hadoop.fs.{FileSystem, Path}
import org.apache.spark.{SparkConf, SparkContext}
object LogServerScala {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf()
// .setMaster("local[2]")
// .setAppName("LogServerScala")
//这里不能写本地,把文件写死了
val sc = new SparkContext(sparkConf)
//输入args(0) 输出:args(1)
val uri = new URI("hdfs://hadoop001:9000")
//这个过程是为了在output可以循环使用,如果存在就删掉
val fileSystem = FileSystem.get(uri,sc.hadoopConfiguration,"hadoop")
if (fileSystem.exists(new Path(args(1)))){
fileSystem.delete(new Path(args(1)),true)
}
val lines = sc.textFile(args(0))
lines.map(x => {
val temp = x.split("\t")
(temp(0),1L)//(url,count)
}).reduceByKey(_+_).saveAsTextFile(args(1))
sc.stop()
fileSystem.close()//文件系统最后也一定要关掉
}
}
代码的写入,要注意一些问题,否则后期运行时会报很多错误的
二:打包
View ==>Tool Windows ==> Maven Projects ==> package
三:
上传jar包
E:\ruozedata_workspace\g5spark1\target\test-classes
你对应的jar路径
re -be上传jar包
[hadoop@hadoop001 shell]$ vi log-yarn.sh
export HADOOP_CONF_DIR=/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/etc/hadoop
$SPARK_HOME/bin/spark-submit \
--master yarn \
--class g5.learning.LogServerScala \
--name LogServerScala \
/home/hadoop/shell/g5spark1-1.0.jar \
hdfs://hadoop001:9000/logs/input/ hdfs://hadoop001:9000/logs/output1
这里要有相关的配置
四:spark on yarn上运行
[hadoop@hadoop001 shell]$ vi log-yarn.sh
[hadoop@hadoop001 shell]$ ./log-yarn.sh
我们去控制台看一下:
成功