IDEA开发Spark的漫漫摸索(二)
1 新建Maven项目
特别提醒,Maven项目中有GropId和ArtifactId。GroupId是项目组织唯一的标识符,实际对应JAVA的包的结构,是main目录里java的目录结构。一般GruopId形如ncepu.com.cn。ArtifactId是项目的唯一的标识符,实际对应项目的名字,就是项目根目录的名称。
2 添加依赖包
spark-assembly-1.6.3-hadoop2.6.0.jar路径:/home/hadoop/spark-1.6.3-bin-hadoop2.6/lib(虚拟机中)
先将spark-assembly-1.6.3-hadoop2.6.0.jar从虚拟机中复制到本机。
File→Project Structure→Libraries→“+”→Java,将spark-assembly-1.6.3-hadoop2.6.0.jar添加进来。
3 测试IDEA和Spark的连通性
在src/main/java目录下新建Java类ConnectionUtil。
Run→Edit Confugurations
在Main class右侧点击“..."选择想要运行的类。
点击图示位置进行编译。
Run→Run"Connection Util“运行Connection Util类。
出现如图结果说明运行成功。
4 IDEA打包运行
准备一个txt文档,上传到HDFS上。
之前已经上传过,所以在此仅用text命令查看。
新建java类JavaWordCount。
import scala.Tuple2;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaPairRDD;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.FlatMapFunction;
import org.apache.spark.api.java.function.Function2;
import org.apache.spark.api.java.function.PairFunction;
import java.util.Arrays;
import java.util.List;
import java.util.regex.Pattern;
public final class JavaWordCount {
private static final Pattern SPACE = Pattern.compile(" ");
public static void main(String[] args) throws Exception {
// if (args.length < 1) {
// System.err.println("Usage: JavaWordCount <file>");
// System.exit(1);
// }
SparkConf sparkConf = new SparkConf().setAppName("JavaWordCount")
.setMaster("spark://master:7077")
.set("spark.executor.memory", "512M");
JavaSparkContext ctx = new JavaSparkContext(sparkConf);
ctx.addJar("D:\\Users\\NCEPU\\IdeaProjects\\Test\\out\\artifacts\\Test_jar\\JavaWordCount.jar");
String path = "hdfs://master:9000/user/hadoop/wordcount.txt";
JavaRDD<String> lines = ctx.textFile(path);
JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {
@Override
public Iterable<String> call(String s) {
return Arrays.asList(SPACE.split(s));
}
});
JavaPairRDD<String, Integer> ones = words.mapToPair(new PairFunction<String, String, Integer>() {
@Override
public Tuple2<String, Integer> call(String s) {
return new Tuple2<String, Integer>(s, 1);
}
});
JavaPairRDD<String, Integer> counts = ones.reduceByKey(new Function2<Integer, Integer, Integer>() {
@Override
public Integer call(Integer i1, Integer i2) {
return i1 + i2;
}
});
List<Tuple2<String, Integer>> output = counts.collect();
for (Tuple2<?,?> tuple : output) {
System.out.println(tuple._1() + ": " + tuple._2());
}
ctx.stop();
}
}
将JavaWordCount类打包。
File→Project Structure→Artifacts→“+”→JAR→From module with dependencies。
特别需要注意的是,Output Directory是打包的jar包的输出路径。
输入main class入口函数名,将Output Layout下所有jar包删掉(因为spark运行环境已经包含了这些包),如果已经存在 META‐INF 要先将这个文件夹删除。
Build→Build Artifact进行打包。打包生成的jar包如图所示。
运行程序后,出现以下结果说明程序运行成功。
5 出现的问题
问题一:提示WARN TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources
++原因++:这个问题是因为内存不够。
++解决++:有如下两种可能的解决方法。
一是修改设置的内存
将这里的内存设置得小一点。
二是重启虚拟机。
问题二:java无法访问scala.Cloneable 找不到scala.Cloneable的类文件
++原因++:原来使用的是 spark‐2.1.0‐bin‐hadoop2.4 没有 spark‐assembly‐1.6.3‐hadoop2.6.0.jar 依赖包所致。
++解决++:因为原来是用的hadoop版本为 2.5.2 相应的依赖包官网已经不再支持,所以更新的平台的hadoop环境为 2.6.5 ,spark 2.X相应的文档很少,更改版本为 1.6.3 。
IDEA开发Spark的漫漫摸索(二)的更多相关文章
- IDEA开发Spark的漫漫摸索(一)
系统:Win10 01 安装IDEA IDEA版本:IntelliJ IDEA 2017.2.1 64位 使用的学生授权下载的ultimate版本,此处不赘叙安装过程. 02安装编译环境 Spark可 ...
- 使用scala开发spark入门总结
使用scala开发spark入门总结 一.spark简单介绍 关于spark的介绍网上有很多,可以自行百度和google,这里只做简单介绍.推荐简单介绍连接:http://blog.jobbole.c ...
- IDEA搭建scala开发环境开发spark应用程序
通过IDEA搭建scala开发环境开发spark应用程序 一.idea社区版安装scala插件 因为idea默认不支持scala开发环境,所以当需要使用idea搭建scala开发环境时,首先需要安 ...
- FusionInsight大数据开发---Spark应用开发
Spark应用开发 要求: 了解Spark基本原理 搭建Spark开发环境 开发Spark应用程序 调试运行Spark应用程序 YARN资源调度,可以和Hadoop集群无缝对接 Spark适用场景大多 ...
- 【机器学习之一】python开发spark环境搭建
环境 spark-1.6 python3.5 一.python开发spark原理使用python api编写pyspark代码提交运行时,为了不破坏spark原有的运行架构,会将写好的代码首先在pyt ...
- spark函数sortByKey实现二次排序
最近在项目中遇到二次排序的需求,和平常开发spark的application一样,开始查看API,编码,调试,验证结果.由于之前对spark的API使用过,知道API中的sortByKey()可以自定 ...
- Spark面试题(二)
首发于我的个人博客:Spark面试题(二) 1.Spark有哪两种算子? Transformation(转化)算子和Action(执行)算子. 2.Spark有哪些聚合类的算子,我们应该尽量避免什么类 ...
- 利用Scala语言开发Spark应用程序
Spark内核是由Scala语言开发的,因此使用Scala语言开发Spark应用程序是自然而然的事情.如果你对Scala语言还不太熟悉,可 以阅读网络教程A Scala Tutorial for Ja ...
- Android开发艺术探索笔记——View(二)
Android开发艺术探索笔记--View(二) View的事件分发机制 学习资料: 1.Understanding Android Input Touch Events System Framewo ...
随机推荐
- myeclipes如何调试web项目
你可以右击项目,然后选中那个debug as,然后选择open debug dialog,在project中选择要运行的项目,sever中选择服务器,然后单击debug就ok了,,
- 【LeetCode】137. Single Number II
题目: Given an array of integers, every element appears three times except for one. Find that single o ...
- Android的缓存图片不在系统图库中显示的解决办法
Android的图库会在开机的时候扫描SD卡中的图片,视频等文件,有很多App的私有图片不想在图库中显示,就需要另外处理了. 解决办法:在缓存图片的文件夹中创建 .nomedia 文件. 1. &qu ...
- 汇编题目:在屏幕中间显示a-z的所有字母,按ESC键改变字符颜色
在屏幕中显示a-z字母,按ESC键改变字符颜色. ;程序功能:在屏幕中间同一点显示a-z的所有字符 ; 1.使用cpu循环空运行实现延迟 ; 2.按ESC键改变正在循环显示的字符的颜色 ; 3.程序完 ...
- 浅谈双流水线调度问题以及Jhonson算法
引入:何为流水线问题 有\(n\)个任务,对于每个任务有\(m\)道工序,每个任务的\(m\)道工序必须在不同的m台机器上依次完成才算把这个任务完成,在前\(i-1\)道工序完成后才能去完成第\(i\ ...
- 洛谷【P1177】【模板】快速排序
题目传送门:https://www.luogu.org/problemnew/show/P1177 快排是一种对于冒泡排序的优化. 对于区间\([l,r]\),我们选择一个键值\(k\),让比\(k\ ...
- 在Global Azure上用Azure CLI创建ARM的VM和面向公网的负载均衡
在Global的Azure上,新的Portal和ARM已经正式发布.将来传统的portal和ASM将逐渐淡出. China Azure将在今年下半年推出新的Portal管理界面和ARM功能(即IaaS ...
- python oop培训文档里面的 正宗oop、多个函数间反复return传参、多个文件无限复制粘贴扣字、无效废物滑稽类4种方式的例子。(2)
把文档里面说的几种范式发出来. 4种编程范式实现一个人吃喝拉撒长身体的代码.语法很简单,思想模拟了所有程序员写代码时候的代码规划设计想法. 0.我不反对复制粘贴的写法,可以百度搜索复制粘贴网上现有的, ...
- GIF助手激活教程(购买+激活)图文版
GIF助手首页==>设置(右上角) ==>输入激活码会弹出购买或者激活的对话框.(如果不明白操作,可以点击如何购买激活码先查看购买帮助指南再进行购买) 点击复制设备码并购买. 此时会进入到 ...
- Mysql ExcuteNonQuery
ExecuteNonQuery()方法主要用户更新数据,通常它使用Update,Insert,Delete语句来操作数据库,其方法返回值意义:对于 Update,Insert,Delete 语句 执 ...