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月前
|
分布式计算 监控 Spark
Spark 任务运行时日志分析
Spark 任务运行时日志分析
24 0
|
1月前
|
Kubernetes Ubuntu Docker
百度搜索:蓝易云【Ubuntu系统搭建K8s集群教程】
现在,你已经在Ubuntu系统上成功搭建了一个Kubernetes集群。记得保留好Kubernetes配置文件以便后续管理。
23 0
|
1月前
|
Java 关系型数据库 BI
基于Java Swing 开发的网吧管理系统【eclipse和idea两个版本运行源码】
基于Java Swing 开发的网吧管理系统【eclipse和idea两个版本运行源码】
|
2月前
|
分布式计算 大数据 Linux
Python大数据之PySpark(三)使用Python语言开发Spark程序代码
Python大数据之PySpark(三)使用Python语言开发Spark程序代码
35 0
|
2月前
|
存储 Kubernetes Ubuntu
百度搜索:蓝易云【基于Ubuntu下安装kubernetes集群指南】
通过按照以上步骤,你应该能够在Ubuntu上成功安装和配置Kubernetes集群。请根据具体情况调整IP地址和网络插件的配置。如果遇到任何问题,可以参考Kubernetes官方文档或社区寻求更多帮助。
19 0
|
2月前
|
分布式计算 Hadoop Windows
解决Windows环境下hadoop集群的运行
解决Windows环境下hadoop集群的运行
22 0
|
2月前
|
存储 分布式计算 大数据
【大数据技术Hadoop+Spark】Spark RDD设计、运行原理、运行流程、容错机制讲解(图文解释)
【大数据技术Hadoop+Spark】Spark RDD设计、运行原理、运行流程、容错机制讲解(图文解释)
45 0
|
2月前
|
设计模式 前端开发 Java
Spring Boot之Spring MVC的工作原理 以及使用eclipse开发Spring MVC的Web应用实战(附源码)
Spring Boot之Spring MVC的工作原理 以及使用eclipse开发Spring MVC的Web应用实战(附源码)
34 0
|
2月前
|
Kubernetes 负载均衡 Ubuntu
Ubuntu部署K8S1.27.1/containerd集群
Ubuntu部署K8S + containerd 生产环境实践
77 0
|
2月前
|
Kubernetes Linux Windows
kubectl 本地远程链接k8s多个集群,远程管控多集群,查看日志 部署服务(windows版)
kubectl 本地远程链接k8s多个集群,远程管控多集群,查看日志 部署服务(windows版)
166 0

相关产品

  • 云迁移中心