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

这里写图片描述

目录
相关文章
|
8月前
|
Ubuntu Unix Linux
在Windows上轻松安装和使用Ubuntu的方法详解
继续点击“Continue”按钮以继续安装流程,随后选择清理磁盘并安装操作系统的选项。 接下来,在安装过程中,你需要选择时区。为了与你的地理位置相匹配,请选择中国上海作为你的时区设置。 在安装过程中,你还需要设置计算机的名称以及账号密码。请务必牢记这些信息,因为它们将作为你登录系统的凭证。
|
6月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
257 11
|
8月前
|
Ubuntu Windows
双系统必备:Ubuntu自动挂载Windows分区
在双系统环境下,手动挂载Windows硬盘十分繁琐。本文介绍如何配置Ubuntu开机自动挂载Windows硬盘,包括硬盘识别、挂载点创建、fstab配置及验证步骤,帮助您节省时间,实现高效操作。
715 1
|
8月前
|
Ubuntu Linux Windows
windows11系统安装ubuntu系统详细步骤
安装后,您可以直接从商店启动应用程序来源
1493 0
|
8月前
|
Ubuntu Linux Shell
手把手教你安装适用于Linux的Windows子系统——Ubuntu
重启完成,你看看重新打开Ubuntu是不是发生了变化,等待几分钟,系统配置完成,根据提示设置用户名和密码即可
|
10月前
|
Ubuntu Linux 数据安全/隐私保护
Windows中安装WSL 2和Ubuntu系统的教程
回看这一路,有趣吧?你已经跨界成为了一个Windows和Linux的桥梁。期待在代码的世界里,把一切玩得风生水起!
530 13
|
8月前
|
Ubuntu Linux 数据安全/隐私保护
Windows上快速安装Linux子系统Ubuntu
Installing, this may take a few minutes...WslRegisterDistribution failed with error: 0x800701bcError: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernelPress any key to continue... 原因是 wsl1 升级到 wsl2 之后,内核却没有升级。 解决:下载最新的wsl安装包(wsl安装包)
|
分布式计算 大数据 Java
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
259 5
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
191 3