Intellij IDEA编写Spark应用程序的环境配置和操作步骤

这篇具有很好参考价值的文章主要介绍了Intellij IDEA编写Spark应用程序的环境配置和操作步骤。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文介绍如何在win系统中使用IDEA开发spark应用程序,并将其打成jar包上传到虚拟机中的三个Ubuntu系统,然后在分布式环境中运行。

主要步骤包括:

  • 安装Scala插件:在Intellij IDEA中安装Scala插件,并重启IDEA。
  • 创建Maven项目:在Intellij IDEA中创建一个Maven项目,选择Scala语言,并添加Spark和HBase依赖。
  • 配置Scala SDK:在Intellij IDEA中添加Scala SDK,并给项目添加Scala支持。
  • 编写Spark应用程序:在src/main/scala目录下创建一个Scala对象,并编写Spark代码。
  • 打包和运行Spark项目:在本地模式下测试Spark应用程序,打包成jar包,上传到虚拟机中的master节点,使用spark-submit命令提交到集群。

 基础环境

 首先确保已经在虚拟机中安装配置好Hadoop,HBase和Spark,并且可以正常运行。本文假设已经按照之前文章的步骤搭建了一个三节点的Hadoop集群,其中scala版本为2.12,hbase版本为2.3.7,spark版本为3.2.3,hadoop版本为3.2.4

一、安装Scala插件

  • 在Intellij IDEA中,选择File->Settings->Plugins,在Marketplace中搜索scala进行安装,安装后根据提示重启IDEA。

二、创建Maven项目

  • 在Intellij IDEA中,选择File->New->Project,选择Maven作为项目类型,填写项目名称和位置。
  • 在pom.xml文件中添加Spark和HBase相关的依赖,注意要与虚拟机中的Spark版本和Scala版本保持一致。本文使用的是Spark 3.2.3和Scala 2.12。例如:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>sparkhbase</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>8</maven.compiler.source>
        <maven.compiler.target>8</maven.compiler.target>

        <hbase.version>2.3.7</hbase.version>
        <hadoop.version>3.2.4</hadoop.version>
        <spark.version>3.2.3</spark.version>
        <scala.version>2.12</scala.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>


    <dependencies>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-core_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-streaming_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-sql_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>
        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-hive_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-client</artifactId>
            <version>${hadoop.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-common</artifactId>
            <version>${hadoop.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hadoop</groupId>
            <artifactId>hadoop-hdfs</artifactId>
            <version>${hadoop.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-client</artifactId>
            <version>${hbase.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-server</artifactId>
            <version>${hbase.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-mapreduce</artifactId>
            <version>${hbase.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase-common</artifactId>
            <version>${hbase.version}</version>
        </dependency>

        <dependency>
            <groupId>org.apache.hbase</groupId>
            <artifactId>hbase</artifactId>
            <version>${hbase.version}</version>
            <type>pom</type>
        </dependency>

        <dependency>
            <groupId>org.apache.spark</groupId>
            <artifactId>spark-mllib_${scala.version}</artifactId>
            <version>${spark.version}</version>
        </dependency>

    </dependencies>
</project>

三、配置Scala SDK

  • 在Intellij IDEA中,选择File->Project Structure->Global Libraries,添加Scala SDK,选择本地安装的Scala版本。
  • 在项目中右键选择Add Framework Support,在弹出的对话框中勾选Scala,并选择对应的SDK。

四、编写Spark应用程序

  • 在src/main/scala目录下创建一个包,例如com.spark.example,并在该包下创建一个Scala对象,例如WordCountFromHBase。编写Spark应用程序的代码,例如:
import org.apache.hadoop.hbase.{HBaseConfiguration, TableName}
import org.apache.hadoop.hbase.client.{Connection, ConnectionFactory, Scan}
import org.apache.hadoop.hbase.mapreduce.TableInputFormat
import org.apache.hadoop.hbase.util.Bytes
import org.apache.spark.{SparkConf, SparkContext}

object WordCountFromHBase {
  def main(args: Array[String]): Unit = {
    //创建Spark配置对象
    val conf = new SparkConf().setAppName("WordCountFromHBase").setMaster("local")
    //创建Spark上下文对象
    val sc = new SparkContext(conf)
    //创建HBase配置对象
    val hbaseConf = HBaseConfiguration.create()
    //设置HBase的Zookeeper地址
    hbaseConf.set("hbase.zookeeper.quorum", "hadoop100:2181,hadoop200:2181,hadoop201:2181")
    //设置HBase的Zookeeper端口
    hbaseConf.set("hbase.zookeeper.property.clientPort", "2181")
    //设置要读取的HBase表名,提前通过hbase shell创建
    val tableName = "testtable"
    hbaseConf.set(TableInputFormat.INPUT_TABLE, tableName)
    //创建HBase连接对象
    val connection: Connection = ConnectionFactory.createConnection(hbaseConf)
    //获取HBase表对象
    val table = connection.getTable(TableName.valueOf(tableName))
    //创建一个扫描对象,指定要读取的列族和列名
    val scan = new Scan()
    scan.addColumn(Bytes.toBytes("f"), Bytes.toBytes("word"))
    //将扫描对象转换为字符串,设置到HBase配置对象中
    hbaseConf.set(TableInputFormat.SCAN, TableMapReduceUtil.convertScanToString(scan))
    //从HBase中读取数据,返回一个RDD
    val hbaseRDD = sc.newAPIHadoopRDD(hbaseConf, classOf[TableInputFormat], classOf[org.apache.hadoop.hbase.io.ImmutableBytesWritable], classOf[org.apache.hadoop.hbase.client.Result])
    //对RDD进行单词统计
    val wordCount = hbaseRDD.map(tuple => {
      //获取Result对象
      val result = tuple._2
      //获取word列的值,转换为字符串
      val word = Bytes.toString(result.getValue(Bytes.toBytes("f"), Bytes.toBytes("word")))
      //返回(word, 1)的元组
      (word, 1)
    }).reduceByKey((a, b) => a + b)
    //打印结果
    wordCount.foreach(println)
    //关闭Spark上下文和HBase连接
    sc.stop()
    connection.close()
  }
}

五、打包和运行Spark项目

  • 在Intellij IDEA中右键运行WordCountFromHBase对象,可以在本地模式下测试Spark应用程序是否正确。如果没有问题,可以进行打包操作。
  • 在Intellij IDEA中打开Maven工具栏,双击lifecycle下的package命令,将项目打成jar包。打包完成后的jar包在target目录下,例如spark-example-1.0-SNAPSHOT.jar。
  • 将jar包上传到虚拟机中的hadoop100主节点,userjar/目录。
  • 在master节点上使用spark-submit命令提交Spark应用程序到集群,指定jar包路径和主类名。例如:
spark-submit --class com.spark.example.WordCountFromHBase spark-example-1.0-SNAPSHOT.jar
  • 查看Spark应用程序的运行结果,可以在终端中输出,也可以在Spark Web UI中查看。

打包方式二: 

File->Project Structure->artifacts->点击加号->JAR->from model->点击Main Class选项框后的文件夹->点击Projet->选择main方法->点击ok

idea spark开发环境,分布式存储与并行处理,scala,spark,intellij idea,hbase

仅保留类似红框中函数名的程序包,去掉多余依赖,打成比较小的jar包,需要linux中的软件环境与依赖版本相同才能运行

idea spark开发环境,分布式存储与并行处理,scala,spark,intellij idea,hbase

 

之后Build->Build artifacts->选中项目点击build即可


 文章来源地址https://www.toymoban.com/news/detail-663984.html

到了这里,关于Intellij IDEA编写Spark应用程序的环境配置和操作步骤的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 编写中间件以用于 Express 应用程序

    中间件 函数能够访问请求对象 ( req )、响应对象 ( res ) 以及应用程序的请求/响应循环中的下一个中间件函数。下一个中间件函数通常由名为  next  的变量来表示。 中间件函数可以执行以下任务: 执行任何代码。 对请求和响应对象进行更改。 结束请求/响应循环。 调用堆栈

    2024年02月10日
    浏览(35)
  • Spark 部署与应用程序交互简单使用说明

    本文将讲解 Spark 的部署,并通过三个简单的步骤来编写一个独立应用程序。 我们将使用本地模式,其中所有的处理都是在Spark shell中的一台机器上完成的——这是学习框架的一种简单方法,迭代执行的方式可以及时反馈直接结果。使用Spark shell,可以在编写复杂的Spark应用程

    2024年04月12日
    浏览(30)
  • 为什么选择Go语言编写网络应用程序

    关注公众号【爱发白日梦的后端】分享技术干货、读书笔记、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力! 作为一名后端开发者,你一定对选择合适的编程语言来编写网络应用程序非常重视。在众多的编程语言中,Go语言(Golang)凭借其独特的特性和

    2024年02月02日
    浏览(82)
  • Python 编写 Flink 应用程序经验记录(Flink1.17.1)

    目录 官方API文档 提交作业到集群运行 官方示例 环境 编写一个 Flink Python Table API 程序 执行一个 Flink Python Table API 程序 实例处理Kafka后入库到Mysql 下载依赖 flink-kafka jar 读取kafka数据 写入mysql数据 flink-mysql jar https://nightlies.apache.org/flink/flink-docs-release-1.17/zh/docs/dev/python/overview/

    2024年02月08日
    浏览(39)
  • Camera | 4.瑞芯微平台MIPI摄像头应用程序编写

    前面3篇我们讲解了camera的基础概念,MIPI协议,CSI2,常用命令等,本文带领大家入门,如何用c语言编写应用程序来操作摄像头。 Linux下摄像头驱动都是基于v4l2架构,要基于该架构编写摄像头的应用程序,必须先要搞清楚什么是v4l2。 v4l2是video for Linux 2的缩写,是一套Linux内核

    2024年01月18日
    浏览(41)
  • 编写一个 Java 应用程序,该程序中有两个类: Vehicle(用于刻画机动车)和 User(主类)。

    具体要求如下: 1)Vehicle 类有一个 double 类型的变量 speed,用于刻画机动车的速度,一个 int 型变量 power,用于刻画机动车的功率。类中定义了 speedUp(int s)方法,体现机动车有减速功能;定义了 speedDown()方法,体现机动车有减速功能;定义了 setPower(int p)方法,用于设置机动车

    2024年02月05日
    浏览(43)
  • Fast DDS(1)编写一个简单的C++发布者和订阅者应用程序

            本次我们详细介绍如何使用C++API逐步创建一个简单的Fast DDS应用程序,其中包含发布者和订阅者。也可以使用eProsima Fast DDS-Gen工具自行生成与本节中实现的示例相类似的示例。在构建发布/订阅应用程序中解释了这种附加方法。 ​​​​​​​1.3.1  背景介绍    

    2024年02月12日
    浏览(35)
  • IDEA打包jar包,以及exe应用程序。

    一、将IDEA中的java项目打包成jar包 ①点击菜单栏中的文件→项目结构 ②在项目结构窗口选择工件。点击添加,选择jar,选择来自有依赖项的模块 ③在【从模块创建JAR】对话框中,选择主类,点击确定 ④点击确定。 ⑤点击菜单栏中的构建,选择构建项目 ⑥点击菜单栏中的构

    2024年02月08日
    浏览(57)
  • 在IDEA运行spark程序(搭建Spark开发环境)

           建议大家写在Linux上搭建好Hadoop的完全分布式集群环境和Spark集群环境,以下在IDEA中搭建的环境仅仅是在window系统上进行spark程序的开发学习,在window系统上可以不用安装hadoop和spark,spark程序可以通过pom.xml的文件配置,添加spark-core依赖,可以直接在IDEA中编写spark程序

    2024年02月06日
    浏览(37)
  • idea使用docker-compose发布应用程序

    idea要想使用docker-compose,不能使用ssh创建idea Docker,而需要使用socket创建idea Docker。 socket docker是不安全的,任何人都可以访问你的docker,所以只能测试环境使用,请勿在正式环境使用socket docker。 云服务器安全组开放2375端口,如果不是云服务器则自己修改防火墙规则开放237

    2024年02月02日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包