在spark shell中编写WordCount程序,idea编写spark程序打包上传

1、首先启动hdfs
2、编辑一个文件上传到hdfs中hdfs://ip:9000/words.txt
3、在spark shell中用scala语言编写spark程序

使用spark-shell进入命令行界面

 在命令行界面输入下面命令

sc.textFile("hdfs://192.168.124.140:9000/words.txt").flatMap(_.split(" ")).map((_,1)).reduceByKey(_+_).saveAsTextFile("hdfs://192.168.124.140:9000/out")

 

说明
sc是SparkContext对象,该对象时提交spark程序的入口
textFile(hdfs://192.168.124.140:9000/words.txt)是hdfs中读取数据
flatMap(_.split(" "))先map在压平
map((_,1))将单词和1构成元组
reduceByKey(_+_)按照key进行reduce,并将value累加
saveAsTextFile("hdfs://192.168.124.140:9000/out")将结果写入到hdfs中

 运行没有报错表示成功,使用hadoop fs -ls /out 查看  使用hadoop fs -cat /out/part-00000 查看内容

spark shell仅在测试和验证我们的程序时使用的较多,在生产环境中,通常会在IDE中编制程序,然后打成jar包,然后提交到集群,

 

2、使用idea编写代码,打包上传到spark 

编写spark程序

package cn

import org.apache.spark.{SparkContext, SparkConf}

object WordCount {
  def main(args: Array[String]) {
    //创建SparkConf()并设置App名称
    val conf = new SparkConf().setAppName("WC")
    //创建SparkContext,该对象是提交spark App的入口
    val sc = new SparkContext(conf)
    //使用sc创建RDD并执行相应的transformation和action
    sc.textFile(args(0)).flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_, 1).sortBy(_._2, false).saveAsTextFile(args(1))
    //停止sc,结束该任务
    sc.stop()
  }
}
  1. 使用Maven打包:首先修改pom.xml中的main class
    首先启动hdfs和Spark集群
    进入相应的hadoop目录启动hdfs

    sbin/start-dfs.sh

    进入相应的spark目录启动spark

    sbin/start-all.sh

13.使用spark-submit命令提交Spark应用(注意参数的顺序) 
./spark-submit \                             //spark提交  在spark目录的bin目录下 
                                             //usr/local/spark-2.1.1-bin-hadoop2.6/bin
--class cn.WordCount \                       //程序main的路径
--master spark://hadoop1:7077 \              //spark master
--executor-memory 2G \                       //使用内存
--total-executor-cores 4 \                   //执行核数
/root/spark-mvn-1.0-SNAPSHOT.jar \           //jar包位置
hdfs://192.168.124.140:9000/words.txt \      //输入路径
hdfs://192.168.124.140:9000/out              //输出路径
  1. 查看结果hdfs dfs -cat hdfs://192.168.124.140:9000/out/part-00000 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值