本机环境:win10,JDK1.8
JDK 下载以及环境变量配置:
http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
选择自己电脑对应的版本
安装教程可从网上查找
环境变量配置:我的电脑,右键属性
新建JAVA_HOME:C:\Program Files\Java\jdk1.8.0_77 (自己JDK安装的路径)
Path:%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;
新建CLASSPATH: .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (注意前面有一点.)
win+R ,输入cmd
之后输入java -version 可看到安装java版本,JDK配置完成
第一步:下载spark到本地,并解压在本地目录
下载地址:http://spark.apache.org/
选择下载版本,本文下载的是spark-2.0.2-bin-hadoop2.7.tgz
解压后:
第二步:配置环境变量
同样新建SPARK_HOME:C:\work\spark(为解压后的目录)
Path:%SPARK_HOME%\bin;%SPARK_HOME%\sbin
第三步:下载hadoop并解压
下载地址:http://hadoop.apache.org/
点击转到下载地方:
选择下载版本:
点击binary下载tar.gz
解压到文件夹
第四步:配置hadoop环境变量:
新建:HADOOP_HOME:C:\work\hadoop-2.7.3(解压目录)
Path:%HADOOP_HOME%\bin
第五步:由于是在windows 下配置spark 需要下载winutils.exe
如果没有winutils.exe 会出现如下bug:“Could not locate executable null\bin\winutils.exe in the Hadoop binaries”
下载地址可从网上查询
下载之后,放入hadoop的bin文件夹下
到目前为止算是全部配置完成,之后就可以打开IDEA进行编码:
idea:
第六步: 新建java 工程 (为java 项目)
新建之后导入jar包:
点击左上角 File--->Project structure
选择 java 点击
选择解压spark目录 中的jars (如果没有选择lib) 确定OK
第七步: 写代码
import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.api.java.function.Function; public class WordCount { public static void main(String[] args) { String logFile = "C://work//zh//work_file//a.txt"; /** * 第1步:创建Spark的配置对象SparkConf,设置Spark程序的运行时的配置信息, * 例如说通过setMaster来设置程序要链接的Spark集群的Master的URL,如果设置 * 为local,则代表Spark程序在本地运行,特别适合于机器配置条件非常差(例如 * 只有1G的内存)的初学者 * */ SparkConf conf = new SparkConf().setAppName("WordCount").setMaster("local"); /** * 第2步:创建SparkContext对象 * SparkContext是Spark程序所有功能的唯一入口,无论是采用Scala、 * Java、Python、R等都必须有一个SparkContext(不同的语言具体的类名称不同,如果是java 的为javaSparkContext) * SparkContext核心作用:初始化Spark应用程序运行所需要的核心组件, * 包括DAGScheduler、TaskScheduler、SchedulerBackend * 同时还会负责Spark程序往Master注册程序等 * SparkContext是整个Spark应用程序中最为至关重要的一个对象 */ JavaSparkContext sc = new JavaSparkContext(conf); //使用persist方法或cache方法将RDD缓存到内存 /** * 第3步:根据具体的数据来源(HDFS、HBase、Local FS、DB、S3等)通过SparkContext来创建RDD * JavaRDD的创建基本有三种方式: * 根据外部的数据来源(例如HDFS)、根据Scala集合、由其它的RDD操作 * 数据会被JavaRDD划分成为一系列的Partitions,分配到每个Partition的数据属于一个Task的处理范畴 */ JavaRDD<String> logData = sc.textFile(logFile).cache(); Long numAs = logData.filter(new Function<String, Boolean>() { @Override public Boolean call(String s) throws Exception { return s.contains("a"); } }).count(); Long numBs = logData.filter(new Function<String, Boolean>() { @Override public Boolean call(String s) throws Exception { return s.contains("b"); } }).count(); System.out.println("Lines with a:" +numAs+"Lines with b:"+numBs); } }
可找出文件中a 和 b 的数量
(由于本人刚刚接触spark,有些遗漏或者错误的地方请各位大神指正,大家相互学习,谢谢!)