Scala-IDE Eclipse(Windows)中开发Spark应用程序,在Ubuntu Spark集群上运行

简介: 在进行实际的Spark应用程序开发时,常常会利用Window环境进行程序开发,开发测试好之后提交到Spark集群中利用bin/spark-submit脚本进行程序的发布运行,本教程教将一步一步地教大家如何进行该操作。本教程主要内容如下:Window开发环境说明Spark集群运行环境说明Scala IDE For Eclipse中Spark程序开发利用spark-s

在进行实际的Spark应用程序开发时,常常会利用Window环境进行程序开发,开发测试好之后提交到Spark集群中利用bin/spark-submit脚本进行程序的发布运行,本教程教将一步一步地教大家如何进行该操作。本教程主要内容如下:

  • Window开发环境说明
  • Spark集群运行环境说明
  • Scala IDE For Eclipse中Spark程序开发
  • 利用spark-submit脚本提交到Spark集群当中运行

Windows开发环境说明

(1)Scala-IDE eclipse ,版本号见下图
Scala-IDE eclipse版本

(2) JAVA版本号 JDK 1.7

(3) Scala 版本号 2.10.4

Spark集群运行环境说明

(1)操作系统:Ubuntu 10.04

(2) Java与Scala版本号与Windows上一致

(3) Hadoop 版本 hadoop 2.2.0

(4) Spark 版本 Spark 1.1.0

配置如下:

IP地址 主机名 运行进程
192.168.1.104 cluster04 QuorumPeerMain(ZooKeeper进程) Master(Spark Master进程) DataNode JournalNode ResourceManager(Yanr资源管理器) NodeManager Worker
192.168.1.105 cluster05 NameNode QuorumPeerMain(ZooKeeper进程) Worker(Spark Worker进程) NodeManager DataNode DFSZKFailoverController(用于实现 NameNode HA) JournalNode
192.168.1.106 cluster06 NameNode QuorumPeerMain(ZooKeeper进程) Worker(Spark Worker进程) NodeManager DataNode DFSZKFailoverController(用于实现 NameNode HA) JournalNode

Scala IDE For Eclipse中Spark程序开发

(1) 在Scala IDE For Eclipse新建一个Scala Project,全名为:SparkWordCount

(2) 将spark-assembly-1.1.0-hadoop2.2.0.jar导入

(3)工程结构如下图
这里写图片描述

(4) 将UserPurchaseHistory.csv上传到HDFS根目录:hadoop fs -put /data/UserPurchaseHistory.csv /
这里写图片描述
UserPurchaseHistory.csv内容如下:
这里写图片描述
第一列表示客户姓名,第二列表示购买物品,第三列表示物品价格

(4)创建包cn.ml,并新建Scala object,全名为PurchaseProduct,代码如下:

package cn.ml

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._


object PurchaseProduct {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf().setAppName("PurchaseProduct")
    val sc = new SparkContext(conf)

    //从HDFS根目录中读取UserPurchaseHistory.csv文件
    val data = sc.textFile("/UserPurchaseHistory.csv")
      .map(line => line.split(","))
      .map(purchaseRecord => (purchaseRecord(0), purchaseRecord(1), purchaseRecord(2)))

    //计算赎买数据
    val numPurchases = data.count()

    //计算客户数量
    val uniqueUsers = data.map { case (user, product, price) => user }.distinct().count()

    //商品价格合计
    val totalRevenue = data.map { case (user, product, price) => price.toDouble }.sum()

    //找出最受欢迎的商品
    val productsByPopularity = data
      .map { case (user, product, price) => (product, 1) }
      .reduceByKey(_ + _)
      .collect()
      .sortBy(-_._2)
    val mostPopular = productsByPopularity(0)

    // finally, print everything out
    println("Total purchases: " + numPurchases)
    println("Unique users: " + uniqueUsers)
    println("Total revenue: " + totalRevenue)
    println("Most popular product: %s with %d purchases".format(mostPopular._1, mostPopular._2))

    sc.stop()
  }
}

(5)将工程打包成Jar文件:SparkWordCount.jar

利用spark-submit脚本将程序提交到Spark集群当中运行

(1)将打包好的SparkWordCount.jar文件上传到Spark Master所在的机器cluster04的根目录上,然后运行下列脚本:
/spark-1.1.0/bin# ./spark-submit –master spark://itcast04:7077 –class cn.ml.PurchaseProduct /SparkWordCount.jar

–master 用于指定集群的master
–class 用于指定待运行的主类

(2) 运行结果图

这里写图片描述

目录
相关文章
|
2天前
|
Java Windows
如何在windows上运行jar包/JAR文件 如何在cmd上运行 jar包 保姆级教程 超详细
本文提供了一个详细的教程,解释了如何在Windows操作系统的命令提示符(cmd)中运行JAR文件。
9 1
|
14天前
|
Windows Python
python获取windows机子上运行的程序名称
python获取windows机子上运行的程序名称
|
14天前
|
小程序 Windows
MASM32编写的程序在Windows 7,10下运行正常,但在Win XP下运行时只闻其声不见其形的故障
MASM32编写的程序在Windows 7,10下运行正常,但在Win XP下运行时只闻其声不见其形的故障
|
2月前
|
芯片 iOS开发 MacOS
Mac上运行windows软件-GPTK
Mac上运行windows软件-GPTK
138 1
|
2月前
|
安全 机器人 程序员
Windows 计划任务每天隔 3 小时运行一次批处理文件详细配置步骤
Windows 计划任务每天隔 3 小时运行一次批处理文件详细配置步骤
209 2
|
2月前
|
Windows
Windows——windows10下如何和子系统Ubuntu18.04互传文件
Windows——windows10下如何和子系统Ubuntu18.04互传文件
50 1
|
2月前
|
JavaScript Windows
electron程序运行在某些 windows 上白屏
electron程序运行在某些 windows 上白屏
|
2月前
|
分布式计算 大数据 Java
Scala 入门指南:从零开始的大数据开发
Scala 入门指南:从零开始的大数据开发
|
PHP Windows 容器
43、Windows驱动程序模型笔记(一)
1、通常,驱动程序在某些不可预测线程的上下文中应该使用异步方式处理I/O请求。我们使用术语任意线程上下文(arbitrary thread context)来描述驱动程序并不知道(或并不关心)处理器当前执行在哪一个线程上的上下文。
833 0
|
PHP Windows C++
44、Windows驱动程序模型笔记(二)
图示 原图2-13 DRIVER_OBJECT数据结构     I/O管理器使用驱动程序对象来代表每个设备驱动程序,见图2-13。就象我们将要讨论的许多数据结构一样,驱动程序对象是部分不透明的。这意味着虽然 DDK头中公开了整个结构,但我们仅能直接访问或修改结构中的某些域。
886 0