赞
踩
在使用idea开发,spark程序时,需要在开发环境模拟hadoop环境,不然,每次都要打jar去集群环境执行调试程序,严重影响开发效率。
winutils.exe是在Windows系统上需要的hadoop调试环境工具,里面包含一些在Windows系统下调试hadoop、spark所需要的基本的工具类,
下面说下具体使用;
下载地址:
https://download.csdn.net/download/software_0215/10690839
下载后,需要配置环境变量;
下载解压后,如下:bin目录下,应该有这个winutils.exe
然后,去配置环境变量,注意,这里的环境变量,不需要配到bin目录,因为spark,会自动读取到hadoop_home,然后加上bin
如下:hadoop_home环境变量。
注意:
idea 需要重启电脑才能识别新增的环境变量,
或者,在程序的开始,加上一句:
System.setProperty("hadoop.home.dir", "D:\\hadoop-2.6.0")
- */ object ScalaWordCount {
- def main(args: Array[String]): Unit = {
- //指定winutils目录,window下hadoop home目录
- System.setProperty("hadoop.home.dir", "D:\\hadoop-2.6.0")
- //创建spark配置文件,设置应用程序名字,以及开启线程数量
- val conf= new SparkConf().setAppName("ScalaWordCount").setMaster("local[4]")
- //创建spark执行入口
- val sc =new SparkContext(conf)
- //指定从哪里读取数据,创建RDD
- val lines:RDD[String]=sc.textFile(args(0)) //每一行的内容
- 。。。。。。。。。。。
具体应用举例操作如下:
代码入下:
- package com.imooc
-
- import org.apache.spark.rdd.RDD
- import org.apache.spark.{SparkConf, SparkContext}
-
- /*
- * Description
- *@author Ruimeng
- *@Date 2019/3/18 10:53
- */ object ScalaWordCount {
- def main(args: Array[String]): Unit = {
-
- System.setProperty("hadoop.home.dir", "D:\\hadoop-2.6.0")
- //创建spark配置文件,设置应用程序名字
- val conf= new SparkConf().setAppName("ScalaWordCount").setMaster("local[4]")
- //创建spark执行入口
- val sc =new SparkContext(conf)
- //指定从哪里读取数据,创建RDD
- val lines:RDD[String]=sc.textFile(args(0)) //每一行的内容
- //对每一行进行切割得到单词,用空格切
- val words:RDD[String]= lines.flatMap(_.split(" "))
- //将每个单词和1组合,形成map元组
- val wordAndOne:RDD[(String,Int)]=words.map((_,1))
- //按key进行聚合
- val reduced:RDD[(String,Int)] = wordAndOne.reduceByKey(_+_)
- //排序
- val sorted:RDD[(String,Int)] = reduced.sortBy(_._2,false)
- //将结果输出到hdfs中
- sorted.saveAsTextFile(args(1))
- //释放资源
- sc.stop()
-
- }
-
- }

指定输入参数:
这样说,在E://hadoop//input下的文件即为模拟的输入文件路径,E://hadoop//output即为输出文件路径
运行程序完成后,生产如下文件:
——
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。