好程序员大数据教程:SparkShell和IDEA中编写Spark程序
好程序员大数据教程:SparkShell和IDEA中编写Spark程序,spark-shell是Spark自带的交互式Shell程序,方便用户进行交互式编程,用户可以在该命令行下用Scala编写Spark程序。spark-shell程序一般用作Spark程序测试练习来用。spark-shell属于Spark的特殊应用程序,我们可以在这个特殊的应用程序中提交应用程序
spark-shell启动有两种模式,local模式和cluster模式,分别为
local模式:
spark-shell
local模式仅在本机启动一个SparkSubmit进程,没有与集群建立联系,虽然进程中有SparkSubmit但是不会被提交到集群红
Cluster模式(集群模式):
spark-shell \
--master spark://hadoop01:7077 \
--executor-memory 512m \
--total-executor-cores 1
后两个命令不是必须的 --master这条命令是必须的(除非在jar包中已经指可以不指定,不然就必须指定)
退出shell
千万不要ctrl+c spark-shell 正确退出 :quit 千万不要ctrl+c退出 这样是错误的 若使用了ctrl+c退出 使用命令查看监听端口 netstat - apn | grep 4040 在使用kill -9 端口号 杀死即可
3.25.11 spark2.2shell和spark1.6shell对比
ps:启动spark-shell若是集群模式,在webUI会有一个一直执行的任务
通过IDEA创建Spark工程
ps:工程创建之前步骤省略,在scala中已经讲解,直接默认是创建好工程的
对工程中的pom.xml文件配置
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<encoding>UTF-8</encoding>
<scala.version>2.11.8</scala.version>
<spark.version>2.2.0</spark.version>
<hadoop.version>2.7.1</hadoop.version>
<scala.compat.version>2.11</scala.compat.version>
</properties>
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId>
<artifactId>scala-library</artifactId>
<version>${scala.version}</version>
</dependency>
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-core_2.11</artifactId>
<version>${spark.version}</version>
</dependency>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>${hadoop.version}</version>
</dependency>
</dependencies>
Spark实现WordCount程序
Scala版本
import org.apache.spark.rdd.RDD
import org.apache.spark.{SparkConf, SparkContext}
object SparkWordCount {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("dri/wordcount").setMaster("local[*]")
val sc = new SparkContext(conf)
val lines: RDD[String] = sc.textFile(“dir/wordcount”)
val words: RDD[String] = lines.flatMap(_.split(" "))
val tuples: RDD[(String, Int)] = words.map((_,1))
val sumed: RDD[(String, Int)] = tuples.reduceByKey(_+_)
val sorted: RDD[(String, Int)] = sumed.sortBy(_._2,false)
sorted.foreach(println)
sc.stop()
}
}
Java版本
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 scala.Tuple2;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
public class JavaWordCount {
public static void main(String[] args) {
SparkConf conf = new SparkConf().setAppName("JavaWordCount").setMaster("local");
JavaSparkContext jsc = new JavaSparkContext(conf);
JavaRDD<String> lines = jsc.textFile("dir/file");
JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() {
@Override
public Iterator<String> call(String s) throws Exception {
List<String> splited = Arrays.asList(s.split(" "));
return splited.iterator();
}
});
JavaPairRDD<String, Integer> tuples = words.mapToPair(new PairFunction<String, String,Integer>() {@Overridepublic Tuple2<String, Integer> call(String s) throws Exception {return new Tuple2<String, Integer>(s, 1);}});复制代码
JavaPairRDD<String, Integer> sumed = tuples.reduceByKey(new Function2<Integer, Integer,Integer>() {复制代码
@Override
public Integer call(Integer v1, Integer v2) throws Exception {return v1 + v2;}});复制代码
JavaPairRDD<Integer, String> swaped = sumed.mapToPair(new PairFunction<Tuple2<String,Integer>, Integer, String>() {@Overridepublic Tuple2<Integer, String> call(Tuple2<String, Integer> tup) throws Exception {return tup.swap();}});复制代码
JavaPairRDD<Integer, String> sorted = swaped.sortByKey(false);复制代码
JavaPairRDD<String, Integer> res = sorted.mapToPair(new PairFunction<Tuple2<Integer,String>, String, Integer>() {@Overridepublic Tuple2<String, Integer> call(Tuple2<Integer, String> tuple2) throws Exception{return tuple2.swap();}});System.out.println(res.collect());res.saveAsTextFile("out1");jsc.stop();}
}复制代码
好程序员大数据教程:SparkShell和IDEA中编写Spark程序相关推荐
- 好程序员大数据教程分享之Hadoop优缺点
好程序员大数据教程分享之Hadoop优缺点,大数据成为时代主流,开启时代的大门,全球43亿部电话.20亿位互联网用户每秒都在不断地产生大量数据,人们发送短信给朋友.上传视频.用手机拍照.更新社交网站的 ...
- 好程序员大数据教程分享超详细大数据学习路线
随着信息产业的迅猛发展,大数据应用逐渐落地,行业人才需求量逐年扩大.大数据成为目前最具前景的高薪行业之一,大数据分析工程师.大数据开发工程师等大数据人才也成为市场紧缺型人才,薪资一涨再涨. 很多人想要 ...
- 好程序员大数据技术分享:Zookeeper集群管理与选举
为什么80%的码农都做不了架构师?>>> 大数据技术的学习,逐渐成为很多程序员的必修课,因为趋势也是因为自己的职业生涯.在各个技术社区分享交流成为很多人学习的方式,今天很荣幸找 ...
- 好程序员大数据笔记之:Hadoop集群搭建
好程序员大数据笔记之:Hadoop集群搭建在学习大数据的过程中,我们接触了很多关于Hadoop的理论和操作性的知识点,尤其在近期学习的Hadoop集群的搭建问题上,小细节,小难点拼频频出现,所以,今天 ...
- 试图加载格式不正确的程序_好程序员大数据学习路线之hive存储格式
好程序员大数据学习路线之hive存储格式,hive的存储格式通常是三种:textfile . sequencefile . rcfile . orc .自定义 set hive.default.fil ...
- 商业方向的大数据专业_好程序员大数据培训分享大数据就业方向有哪些
好程序员大数据培训分享大数据就业方向有哪些?看到了大数据的就业前景及就业薪资,相信很多人都对大数据技术跃跃欲试,想要学习大数据技术.小编认为在学习大数据之前,你还需要了解一下大数据的就业方向有哪些?毕 ...
- 好程序员大数据培训分享大数据概述
好程序员大数据培训分享大数据概述一,大数据时代的悄然来临,让信息技术的发展发生了巨大变化,并深刻影响着社会生产和人民生活的方方面面.每个国家都高度重视大数据技术的研究和产业发展,纷纷把大数据上升为国家 ...
- 深圳大数据培训:好程序员大数据学习路线之hive 存储格式
深圳大数据培训:好程序员大数据学习路线之hive 存储格式 好程序员大数据学习路线之hive存储格式,hive的存储格式通常是三种:textfile . sequencefile . rcfile . ...
- 好程序员大数据培训分享怎样进行大数据入门学习
好程序员大数据培训分享怎样进行大数据入门学习,对于大数据的入门学习,基础不一样,起点就会不一样. 今天先来说说,对于零基础的同学想要学习大数据的方式方法吧!很多人可能感到不可思议,零基础怎么可能学习大 ...
最新文章
- php本地安装帝国视频,帝国cms如何播放视频
- 【Python基础】Python爬虫的两套解析方法和四种信息提取方式
- 利用Excel或LibreOffice的业务输入进行单元测试约束
- SQL Server 2008 R2数据库镜像部署
- C++新特性探究(九):functor仿函数
- Linux操作Oracle(8)——Oracle数据库迁移全纪录(1) — 表空间 用户 权限迁移
- solid 设计原则 php,面向对象设计SOLID五大原则
- SVN安装-配置-使用及myeclipse的插件安装(图文)
- Base64编码解码(一)——介绍
- 支付宝宣布刷脸支付将全面接管扫码支付
- GridView commandname
- 清华梦的粉碎-写给清华大学的退学申请
- 开发者体验:如何更好的呈现错误?
- SQL数据库完美恢复 SQL数据库损坏修复
- 太阳能心率智能骑行仪(STM32)
- 博途数据类型wstring怎么用_在 STEP 7 (TIA 博途) 中,如何使用用户自定义数据类型 (UDT)?...
- html5 圆圈扩散,CSS3地图动态实例代码(圆圈向外扩散)
- VeLO:让AI自己调整参数的新优化器
- 详解HBase架构原理
- 成年人的100个心酸瞬间:那些看似光鲜亮丽职业的背后......