crm开发定制使用IntelliJ Idea开发Spark应用程序

使用IntelliJ Ideacrm开发定制开发应用程序


未经许可,crm开发定制禁止以任何形式转载,若要引用,crm开发定制请标注链接地址
全文共计3704字,crm开发定制阅读大概需要3分钟

一、实验目的

掌握使用IntelliJ Idea开发Sparkcrm开发定制应用程序的过程。

二、实验内容

1、使用IntelliJ Idea开发本地Spark应用程序。
  2、部署Spark应用程序。

三、实验原理

首先创建Spark应用程序,crm开发定制在本地运行并测试;然后修改Spark应用程序,crm开发定制访问分布式文件系统;crm开发定制最后将项目打为jar包,部署到Spark集群上执行。

四、实验环境

硬件:x86_64 16.04服务器
  软件:JDK1.8,Spark-2.3.2,-2.7.3,IntelliJ Idea

五、实验步骤

5.1 启动IntelliJ Idea并创建spark项目

1、启动IntelliJ Idea。在终端窗口下,执行以下命令:

1.	$ cd /opt/idea-IC-191.7479.19/bin2.	$ ./idea.sh
  • 1
  • 2

2、在Idea中创建scala项目,并命名为”helloscala”,其它都默认即可。

3、依次选择”File | Project structure…”菜单项,进入项目结构界面。如下图所示:

4、Spark程序开发和运行,需要依赖Spark相关的jar包。按图中所示依次选择,手动导入spark的jar包到项目中。如下图所示:

5、要引入的jar包位于Spark安装目录的jars目录下(本实验中位于”/opt/spark/jars/“目录下)。之后一直点击【OK】按钮即可导包成功。如下图所示:

6、查看成功导入的部分jar包。如下图所示:

5.2 数据准备

我们将构建一个简单的程序,它根据莎士比亚的文集执行单词计数。因此,我们需要保存此shakespeare.txt数据集的两个副本。一个在项目中用于本地系统测试,另一个在HDFS (Hadoop分布式文件系统)中用于集群测试。
  1. 将shakespeare.txt拷贝到项目的resources目录下。打开一个终端窗口,执行如下命令:

1.	$ cp /data/dataset/shakespeare.txt ~/IdeaProjects/helloscala/src/
  • 1

2. 将shakespeare.txt上传到HDFS目录下。执行如下的命令执行上传:

1.	$ start-dfs.sh2.	$ hdfs dfs -mkdir -p /data/dataset/3.	$ hdfs dfs -put /data/dataset/shakespeare.txt  /data/dataset/
  • 1
  • 2
  • 3

5.3 编写spark代码

1、选中spark_project1项目的src目录上,单击右键,依次选择”New | Scala Class”,创建Scala类。如下图所示:

2、在弹出的对话框中,命名”HelloScala”,并选择”Object”类型。如下图所示:

3、打开”HelloScala.scala”源文件,编辑代码如下:

1.	import org.apache.spark.{SparkConf, SparkContext}2.	     3.	object HelloScala {4.	     5.	  def main(args: Array[String]) {6.	     7.	    // 创建一个SparkContext来初始化Spark8.	    val conf = new SparkConf()9.	    conf.setMaster("local")10.	    conf.setAppName("Word Count")11.	    val sc = new SparkContext(conf)12.	     13.	    // 将文本加载到Spark RDD中,它是文本中每一行的分布式表示14.	    val textFile = sc.textFile("src/shakespeare.txt")15.	     16.	    // 执行单词计数17.	    val counts = textFile.flatMap(line => line.split(" "))18.	                      .map(word => (word, 1))19.	                      .reduceByKey(_ + _)20.	     21.	    counts.foreach(println)22.	    System.out.println("全部单词: " + counts.count());23.	  }24.	25.	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

4、运行程序。右键单击文本编辑器并选择”Run ‘HelloScala’”来运行程序。这将运行Spark作业并打印莎士比亚作品中出现的每个单词的频率,预期输出如下:

注意我们设置了这一行代码:

1.	conf.setMaster("local")
  • 1

这告诉Spark使用这台计算机在本地运行,而不是在分布式模式下运行。要在多台机器上运行Spark,我们需要更改此值。

5.4 部署分布式Spark应用程序

在生产环境中,Spark通常会处理存储在HDFS等分布式文件系统中的数据。Spark通常也以集群模式运行。
  1. 修改源代码如下:

1.	import org.apache.spark.{SparkConf, SparkContext}2.	     3.	object HelloScala {4.	  def main(args: Array[String]): Unit = {     5.	    // 创建一个SparkContext来初始化Spark6.	    val conf = new SparkConf().setAppName("Word Count")7.	    val sc = new SparkContext(conf)8.	     9.	    // 修改输入和输出文件路径为HDFS上的路径(请把其中的localhost换为当前的机器名)10.	    val input = "hdfs://localhost:9000/data/dataset/shakespeare.txt"11.	    val output = "hdfs://localhost:9000/data/dataset/shakespeareWordCount"12.	     13.	    // 将文本加载到Spark RDD中,它是文本中每一行的分布式表示14.	    val textFile = sc.textFile(input)15.	     16.	    // 进行单词计数17.	    val counts = textFile.flatMap(line => line.split(" "))18.	                         .map(word => (word, 1))19.	                         .reduceByKey(_ + _)20.	     21.	    counts.foreach(println)22.	    System.out.println("全部单词: " + counts.count())23.	     24.	    counts.saveAsTextFile(output)25.	  }26.	}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

这告诉Spark读写HDFS,而不是本地。

5.5 打包程序

我们将把这些代码打包到一个已编译的jar文件中,该文件可以部署在Spark集群上。jar是一个压缩文件,它包含我们的代码和代码工作所需的所有依赖项。
  1、依次选择”File | Project Structure…”菜单项,进入项目结构界面。如下图所示:

2、按图中选择依次点击进行打包,如图13所示

3、在弹出的对话框,Main Class框中选择 HelloScala,其它保持默认即可,点击【OK】。如下图所示:

4、返回到项目结构界面,把项目依赖的所有jar包都删除,只导出类文件,点击【OK】按钮。如下图所示:

5、点击”Build | Build Artifacts”菜单项进行编译。如下图所示:

6、按图中所示选择即开始编译。如下图所示:

5.6 集群运行jar包

1、启动Spark集群。在终端窗口下,执行以下命令:

1.	$ cd /opt/spark2.	$ ./sbin/start-all.sh
  • 1
  • 2

2、提交作业执行。使用spark-submit运行我们的代码。我们需要指定主类、要运行的jar和运行模式(集群)。(注意:请将下面命令中的localhost替换为虚拟机当前的机器名)

1.	$ spark-submit --class HelloScala  --master spark://localhost:7077 /root/IdeaProjects/helloscala/out/artifacts/helloscala_jar/helloscala.jar
  • 1

控制台应该打印莎士比亚作品中出现的每个单词的频率,如下所示:

(comutual,1)(ban-dogs,1)(rut-time,1)(ORLANDO],4)(Deceitful,1)(commits,3)(GENTLEWOMAN,4)(honors,10)(returnest,1)(topp’d?,1)(compass?,1)(toothache?,1)(miserably,1)(hen?,1)(luck?,2)(call’d,162)(lecherous,2)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

此外,可通过HDFS或Web UI查看输出文件的内容:

1.	$ hdfs dfs -cat /data/dataset/shakespeareWordCount/part-00000
  • 1

— END —

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发