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) 运行结果图

这里写图片描述

目录
相关文章
|
10月前
|
Linux 虚拟化 iOS开发
VMware Fusion 13.6.4 OEM BIOS 2.7 - 在 macOS 中运行 Windows 虚拟机的最佳方式
VMware Fusion 13.6.4 OEM BIOS 2.7 - 在 macOS 中运行 Windows 虚拟机的最佳方式
1328 3
|
监控 搜索推荐 开发工具
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
3109 2
2025年1月9日更新Windows操作系统个人使用-禁用掉一下一些不必要的服务-关闭占用资源的进程-禁用服务提升系统运行速度-让电脑不再卡顿-优雅草央千澈-长期更新
|
人工智能 数据处理 C#
AI Dev Gallery:微软开源 Windows AI 模型本地运行工具包和示例库,助理开发者快速集成 AI 功能
微软推出的AI Dev Gallery,为Windows开发者提供开源AI工具包和示例库,支持本地运行AI模型,提升开发效率。
1027 13
|
算法 关系型数据库 测试技术
WHQL微软驱动签名方案,让驱动程序在Windows系统流畅运行
WHQL认证(Windows徽标认证)是微软设立的严格测试标准,旨在确保驱动程序的兼容性、稳定性和互通性。本文介绍了三种WHQL微软驱动签名方案:单系统签名、多系统签名和硬件兼容性测试方案,分别满足不同开发商的需求。通过WHQL认证,不仅能消除Windows安装警告,提升用户体验,还能获得“Designed for Windows”徽标授权,入列全球Windows Catalog及HCL产品表,提升品牌权威性和采购优先权。此外,访问微软OCA可获取错误反馈,助力产品质量改进。选择合适的签名方案,让驱动在Windows系统中流畅运行!
|
Linux C# iOS开发
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
开源GTKSystem.Windows.Forms框架让C# Winform支持跨平台运行
444 12
|
Java Android开发
Eclipse 运行程序
Eclipse 运行程序
236 2
|
Java Android开发
Eclipse 运行配置(Run Configuration)
Eclipse 运行配置(Run Configuration)
466 1
|
Ubuntu Linux Python
如何利用wsl-Ubuntu里conda用来给Windows的PyCharm开发
如何在WSL(Windows Subsystem for Linux)的Ubuntu环境中使用conda虚拟环境来为Windows上的PyCharm开发设置Python解释器。
2703 1
|
监控 关系型数据库 MySQL
PowerShell 脚本编写 :自动化Windows 开发工作流程
PowerShell 脚本编写 :自动化Windows 开发工作流程
768 0