在目录/home/hadoop/2016113012下有文件words.txt

hello scala
hello java
hello python
hello wujiadong

上传该文件到hdfs

hadoop@slave01:~/2016113012$ hadoop fs -put /home/hadoop/2016113012/words.txt /student/2016113012/spark
hadoop@slave01:~/2016113012$ hadoop fs -lsr /student/2016113012

启动spark shell


1和2为spark local模式,因为没有指定master地址 方式1:不设置任何参数
hadoop@master:~$ spark-shell
方式2:设置相关参数
hadoop@master:~$ spark-shell --executor-memory 2g --total-executor-cores 2 --executor-cores 1
方式3:指定master地址(暂时没用到过,用到再写) 注释:
--executor-memory 2g:指定每个worker可用内存为2g
--total-executor-cores 2:指定整个集群使用的cup核数为2个
--executor-cores:每个executor使用的cpu核数 Spark Shell中已经默认将SparkContex类初始化为对象sc。用户代码如果需用到,直接使用sc即可

在spark shell中使用Scala编写spark程序

scala> val fileRDD = sc.textFile("hdfs://master:9000/student/2016113012/spark/words.txt")
fileRDD: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[3] at textFile at <console>:15 scala> val wordRDD = fileRDD.flatMap(_.split(" "))
wordRDD: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[4] at flatMap at <console>:17 scala> val wordPair = wordRDD.map((_,1))
wordPair: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[5] at map at <console>:19 scala> val result = wordPair.reduceByKey(_+_)
17/03/04 21:08:37 INFO FileInputFormat: Total input paths to process : 1
result: org.apache.spark.rdd.RDD[(String, Int)] = ShuffledRDD[6] at reduceByKey at <console>:21 scala> result.sortBy(_._2,false)
res1: org.apache.spark.rdd.RDD[(String, Int)] = MapPartitionsRDD[9] at sortBy at <console>:24 scala> result.sortBy(_._2,false).collect()
17/03/04 21:09:49 INFO deprecation: mapred.tip.id is deprecated. Instead, use mapreduce.task.id
17/03/04 21:09:49 INFO deprecation: mapred.task.id is deprecated. Instead, use mapreduce.task.attempt.id
17/03/04 21:09:49 INFO deprecation: mapred.task.is.map is deprecated. Instead, use mapreduce.task.ismap
17/03/04 21:09:49 INFO deprecation: mapred.task.partition is deprecated. Instead, use mapreduce.task.partition
17/03/04 21:09:49 INFO deprecation: mapred.job.id is deprecated. Instead, use mapreduce.job.id
res2: Array[(String, Int)] = Array((hello,4), (scala,1), (wujiadong,1), (python,1), (java,1))
scala> result.sortBy(_._2,false).saveAsTextFile("hdfs://master:9000/wordcount_out")
17/03/04 21:11:03 INFO FileOutputCommitter: Saved output of task 'attempt_201703042111_0005_m_000000_4' to hdfs://master:9000/wordcount_out/_temporary/0/task_201703042111_0005_m_000000 查看运行的结果
hadoop@master:~$ hadoop fs -ls hdfs://master:9000/wordcount_out
17/03/04 21:12:28 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Found 2 items
-rw-r--r-- 3 hadoop supergroup 0 2017-03-04 21:11 hdfs://master:9000/wordcount_out/_SUCCESS
-rw-r--r-- 3 hadoop supergroup 54 2017-03-04 21:11 hdfs://master:9000/wordcount_out/part-00000
hadoop@master:~$ hadoop fs -text hdfs://master:9000/wordcount_out/part-00000
17/03/04 21:14:45 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
(hello,4)
(scala,1)
(wujiadong,1)
(python,1)
(java,1) 一行写完
scala> sc.textFile("hdfs://master:9000/student/2016113012/spark/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).collect
res9: Array[(String, Int)] = Array((scala,1), (wujiadong,1), (python,1), (hello,4), (java,1))
//或者输出到hdfs
scala> sc.textFile("hdfs://master:9000/student/2016113012/spark/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).sortBy(_._2,false).saveAsTextFile("hdfs://master:9000/spark_out") 说明:
sc是SparkContext对象,该对象是提交spark程序的入口。spark shell中已经默认将SparkContext类初始化为对象sc,可以直接使用sc
textFile()是hdfs中读取数据
flatMap(_.spli" ")) 先map再压平
map((_,1))将单词和1构成元组
reduceByKey(_+_)按照key进行reduce,并将value累加
sortBy(_._2,false):按值进行排序
saveAsTextFile("")将结果写入到hdfs中

spark学习12(Wordcount程序之spark-shell)的更多相关文章

  1. Spark学习之wordcount程序

    实例代码: import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.ap ...

  2. Spark学习笔记1——第一个Spark程序:单词数统计

    Spark学习笔记1--第一个Spark程序:单词数统计 笔记摘抄自 [美] Holden Karau 等著的<Spark快速大数据分析> 添加依赖 通过 Maven 添加 Spark-c ...

  3. 大话Spark(3)-一图深入理解WordCount程序在Spark中的执行过程

    本文以WordCount为例, 画图说明spark程序的执行过程 WordCount就是统计一段数据中每个单词出现的次数, 例如hello spark hello you 这段文本中hello出现2次 ...

  4. WordCount程序【Spark Streaming版本】

    ~~ 前置 ~~ Spark Streaming 常常对接 :本地文件.HDFS.端口.flume.kafka package february.streaming import org.apache ...

  5. 50、Spark Streaming实时wordcount程序开发

    一.java版本 package cn.spark.study.streaming; import java.util.Arrays; import org.apache.spark.SparkCon ...

  6. Spark学习笔记1(初始spark

    1.什么是spark? spark是一个基于内存的,分布式的,大数据的计算框架,可以解决各种大数据领域的计算问题,提供了一站式的服务 Spark2009年诞生于伯克利大学的AMPLab实验室 2010 ...

  7. 在Spark上运行WordCount程序

    1.编写程序代码如下: Wordcount.scala package Wordcount import org.apache.spark.SparkConf import org.apache.sp ...

  8. spark学习12(spark架构原理)

    spark采用的是主从式的架构,主节点叫master,从节点是worker Driver 我们编写的spark就在Driver上,由driver进程执行. Driver是spark集群的节点之一,或你 ...

  9. Spark中的wordCount程序实现

    import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apache.s ...

随机推荐

  1. 深入java虚拟机(一) 虚拟机内存结构

    java虚拟机所管理的内存区域(运行时数据区)主要分为如下几个部分:堆(heap).方法区(method area).虚拟机栈(VM stack).本地方法栈(native method stack) ...

  2. ORA-00257错误的解决办法

    author: headsen  chen date: 2018-04-17  11:12:39 notice:个人原创,转载请注明作者和出处,否则依法追击法律责任. 1,oracle数据库正常使用中 ...

  3. JavaWeb中servlet读取配置文件的方式

    我们在JavaWeb中常常要涉及到一些文件的操作,比如读取配置文件,下载图片等等操作.那我们能不能采用我们以前在Java工程中读取文件的方式呢?废话不多说我们来看看下我们以前在Java工程中读取文件是 ...

  4. JavaScript四种数值取整方法

    一.Math.trunc() 1.定义 Math.trunc()方法去除数字的小数部分,保留整数部分. 2.语法 Math.trunc(value) 3.示例 console.log(Math.tru ...

  5. 模块 - logging/re

    logging 模块 很多程序都有记录日志的需求 logging的日志可以分为 debug(), info(), warning(), error() and critical()5个级别 1.最简单 ...

  6. OVN实战---《A Primer on OVN》翻译

    overview 在本文中,我们将在三个host之间创建一个简单的二层overlay network.首先,我们来简单看一下,整个系统是怎么工作的.OVN基于分布式的control plane,其中各 ...

  7. 常见面试题整理--Python概念篇

    希望此文可以长期更新并作为一篇Python的面试宝典.每一道题目都附有详细解答,以及更加详细的回答链接.此篇是概念篇,下一篇会更新面试题代码篇. (一).这两个参数是什么意思:*args,**kwar ...

  8. WEB安全验收参考文档——From Github

    文章https://xianzhi.aliyun.com/forum/read/793.html 里面涉及到了web安全验收参考文档: 其实github上老外对此也做过一些整理.详情参考:https: ...

  9. 003-mysql查询表的数据大小

    在需要备份数据库里面的数据时,我们需要知道数据库占用了多少磁盘大小,可以通过一些sql语句查询到整个数据库的容量,也可以单独查看表所占容量. 1.查看数据库表结构大小,要查询表所占的容量,就是把表的数 ...

  10. golang 常用的日期方法和时区的坑

    import( "time" ) 1.获取当前时间 time.Now(),返回类型:time结构. 2.字符串转为日期 t, _ := time.ParseInLocation(& ...