Idea中编写并运行Spark集群(WordCount)

Idea中编写并运行Spark集群(WordCount)

1. 安装SBT、Scala、SBT-Excutor

在File-> Settings -> Plugins

安装SBT、SBT Executor、Scala(可以下载安装包本地安装的)

 

2. 创建scala项目并导入Libraries:

   File->Project Structure -> Libraries -> + -> java 

   然后选择$SPARK_HOME/lib/spark-assembly-1.3.1-hadoop2.6.0.jar导入。

   如果没有导入scala顺便也导入

   

 

3. 建立src文件夹

(笔者是因为不能自动构建工作文件夹,故自己创建文件夹来进行单文件函数测试。),

   再在src中创建package:main.scala.com.spark.firstapp

 

4. 在这包下面新建scala文件(选择object) 

 

5. 在WordCount写入下面代码:

package main.scala.com.spark.firstapp
 
/**
 * Created by hadoop on 16-7-30.
 */
 
import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.SparkContext._
 
object WordCount {
  def main(args: Array[String]) {
    if (args.length < 2) {
      System.err.println("Usage: <file>")
      System.exit(1)
    }
 
    val conf = new SparkConf().setMaster("spark://master:7070")
    val sc = new SparkContext(conf)
    val line = sc.textFile(args(0))
    //output to file
    line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).saveAsTextFile(args(1))
    //output to  screen
    line.flatMap(_.split(" ")).map((_, 1)).reduceByKey(_+_).collect().foreach(println)
    sc.stop()
  }
}


 

6. 编辑运行设置:

   上方的Run-> Edit Configurations:(当然这些都可以在代码中动态修改)

   (1). Main class: WordCount

   (2). VM options: -Dspark.master=local   或者 -Dspark.master=saprk://master:7070   后者为集群运行。

   (3). Program arguments:hdfs://master:9000/input/README.txt (这个需要提前在hdfs中放置有文件)

   Apply  OK

7. 运行集群:

对着WordCount文件右键Run即可。

8. 也可以打包,在终端执行:

 

   File->Project Structure -> Artifacts-> + -> JAR -> Frommodules with dependencies...

   接着选择刚刚的Main Class   ,Apply  OK

  然后再build文件

   Build -> Build Artifact -> scalascala.jar -> Build (如果是第二次之后,则选择Rebuild)

   等待几十秒即可编译完毕。

此时可以在该项目文件夹的 ./out/artifacts/scalascala_jar/中即可找到打包后的文件。



9. 集群中运行:

   将jar包发到集群中。(笔者将其放在共享文件夹中,即/mnt/hgfs/中(集群中的机器均能访问)

在运行: 

$SPARK_HOME/bin/spark-submit --master spark://master:7077 --classmain.scala.com.spark.firstapp.WordCount --executor-memory 500m /mnt/hgfs/ubuntu/rthings/idea/jar_test/scalascala.jar hdfs://master:9000/input/README.txthdfs://master:9000/output/test_7_30/

 

(在此之前笔者在hdfs://master:9000/input放置有README.txt文件),而hdfs://master:9000/output/test_7_30/必须是未创建的文件夹,且上面的是500m。也可以为1g,看配置的内存大小而定)

运行状态:





 

 

参考:http://blog.csdn.net/bahaidong/article/details/44241101

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值