背景:

因为是在已经搭好的Maven项目上进行开发,环境是集群环境,不需要再配置,只是讲一下写时遇到的坑。

1. 因为是采用idea开发,直接在maven项目上新建一个文件夹SparkWordCount和文件SparkWordCount.scala,利用maven打包后,spark-submit提交任务后,一直报错:

19/02/20 19:34:23 ERROR yarn.ApplicationMaster: Uncaught exception:
java.lang.ClassNotFoundException: com.yixia.bigdata.etl.SparkWordCount.SparkWordCountat java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader.loadClass(ClassLoader.java:424)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

后来发现,原来是代码里面没加包名:package com.yixia.bigdata.etl.SparkWordCount,所以找不到主类

2. 包名问题解决后,又报错

19/02/20 19:42:38 INFO yarn.ApplicationMaster: Waiting for spark context initialization...
Exception in thread "Driver" java.lang.NullPointerExceptionat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.apache.spark.deploy.yarn.ApplicationMaster$$anon$2.run(ApplicationMaster.scala:552)
19/02/20 19:42:38 ERROR yarn.ApplicationMaster: Uncaught exception:
java.lang.IllegalStateException: SparkContext is null but app is still running!at org.apache.spark.deploy.yarn.ApplicationMaster.runDriver(ApplicationMaster.scala:355)at org.apache.spark.deploy.yarn.ApplicationMaster.run(ApplicationMaster.scala:197)

后来发现,主类是用class创建的,而不是object创建的。因为object是scala的静态类,而main方法作为整个程序的入口,必须是静态的,只能用object来修饰,而不能用class

3. 统计词频的逻辑,首先把文件读进去,然后过滤掉空字符,再利用map对每个词频进行统计,最后reduceByKey即可,利用saveAsTestFile进行保存。这里没有用split()函数,主要是因为我的测试数据一行就一个字符,所以不需要split(); 为了保证实例的资源回收,必须写sc.stop()

详细的实例编程代码如下:

package com.yixia.bigdata.etl.SparkWordCountimport org.apache.spark.{SparkConf, SparkContext}object SparkWordCount  {def main(args:Array[String]) : Unit ={val sc = new SparkContext()val input = args(0) //hdfs://nameservice1/user/matrix/zyval output = args(1)val data = sc.textFile(input)val wordcount=data.filter(it => it!="").map(word => (word,1)).reduceByKey(_+_)wordcount.saveAsTextFile(output)sc.stop()}}

提交到集群上的代码如下:

spark-submit \--class com.yixia.bigdata.etl.SparkWordCount.SparkWordCount \--name com.yixia.bigdata.etl.SparkWordCount.SparkWordCount \--keytab ~/.matrix.keytab  \--principal matrix  \--master yarn \--deploy-mode cluster \--num-executors 50 \--queue matrix \./etl-1.0-SNAPSHOT-jar-with-dependencies.jar hdfs://nameservice1/user/matrix/zy hdfs://nameservice1/user/matrix/zy1234

提交到yarn集群上,既可以跑出来结果了,结果存在hdfs上面

spark 第一个简单实例wordcount相关推荐

  1. c语言最简单程序实例,C语言第一个简单实例

    在信息化.智能化的世界里,可能很早很早 我们就听过许多IT类的名词,C语言也在其中,我们侃侃而谈,到底C程序是什么样子?让我们先看简单的一个例子: #include                 / ...

  2. c语言简单程序printf,程序演示:C语言第一个简单实例

    在信息化.智能化的世界里,可能很早很早 我们就听过许多IT类的名词,C语言也在其中,我们侃侃而谈,到底C程序是什么样子?让我们先看简单的一个例子: #include /*引入头文件*/ int mai ...

  3. MapReduce的简单实例WordCount

    hadoop ---------------------------------------- 1.组成:common,hdfs,mapreduce,yarn 2.hadoop集群搭建:3种[搭建流程 ...

  4. js入门·循环与判断/利用函数的简单实例/使用对象/列举对象属性的名称

    1,列举对象属性的名称 <script language="javascript"> var obj=new Object(); obj.a="您好,我是田洪 ...

  5. WPF MvvmLight简单实例(1) 页面导航

    原文:WPF MvvmLight简单实例(1) 页面导航 实现了那些功能,先看看截图: 操作描述: 在程序运行后,点击"Load"按钮,页面会加载PageOne,点击PageOne ...

  6. php 在数组中,PHP 在数组中搜索给定的简单实例 array_search 函数

    array_search() PHP array_search() 函数用于在数组中搜索给定的值,如果成功则返回相应的键名,否则返回 FALSE . 语法: mixed array_search( m ...

  7. 如何上传html验证文件大小,html5 实现客户端验证上传文件的大小(简单实例)

    在HTML 5中,现在可以在客户端进行文件上传时的校验了,比如用户选择文件后,可以 马上校验文件的大小和属性等.本文章向码农介绍html5 如何实现客户端验证上传文件的大小,感兴趣的码农可以参考一下. ...

  8. springMVC简单实例

    springMVC简单实例 参考: 使用springMVC实现简单的登录例子 - Admol - 博客园 https://www.cnblogs.com/admol/articles/4199546. ...

  9. 简单实例讲解linux的module模块编译步骤

    简单实例讲解linux的module模块编译步骤 (2014-10-24 10:19:17) 标签: module linux 分类:Linux/Unix 本文将直接了当的带你进入linux的模块编译 ...

最新文章

  1. 技术图文:如何理解C#的internal限制修饰符?
  2. 【七招破解WinXP系统访问网络变慢的故障】
  3. ELK 使用4-Kafka + zookpeer
  4. svpwm仿真_案例12:三相三线PWM整流仿真建模
  5. 什么是加载因子/负载因子/装载因子
  6. thymeleaf引入css js写法
  7. Google开源的AR/VR开发库Lullaby
  8. 万进制——蓝桥杯|ACM 大数阶乘——21行代码AC
  9. C# js调用winform方法,C# JS与winform通信
  10. Webpack:代码分割
  11. 安装svn + vs code配置svn
  12. 太牛X了! 呕心沥血整理的4000页Java学习手册文档!
  13. python数据分析——pyecharts地图全解
  14. python时间格式转换为美式日期_python中有关时间日期格式转换问题
  15. Dijkstra算法结合时间窗规划无冲突路径
  16. MS08067红队攻防班 第五期开班啦!(2021年最后一期)
  17. STM32 电机PWM控制
  18. Pytest的基本使用
  19. Linux系统之进入单用户模式的方法及相关作用
  20. ReactNative进阶(三十五):应用脚手架 Yo 构建 RN 页面

热门文章

  1. C# - Task的各种用法和详解
  2. 趣学呗告诉你:一年级如何养成良好的学习习惯,这12点方法要牢记
  3. 配置华为防火墙允许对tracert路探测回显
  4. DrawerLayout和ToolBar
  5. 8254 定时/计数器应用实验
  6. winForm安装ReportViewer
  7. 利用百度翻译API做的在线翻译(python)
  8. 基于Hexo+Github构建个人博客(一)
  9. 06-[案例2]中英文切换导航的实现
  10. lcd屏和oled屏的优缺点 lcd屏和oled屏哪个省电