Spark安装及其sbt和maven 打包工具安装

一.安装准备

  1. 需要先安装hadoop,Java JDK,采用 Hadoop(伪分布式)+Spark(Local模式) 的组合.
  2. spark和sbt,maven的版本:spark-2.4.5-bin-without-hadoop.tgz 和sbt-1.3.8.tgz,maven-3.6.3;
    https://pan.baidu.com/s/129rn9DrjVSzGi2SksTkefw 提取码: ebbb

二.spark 本地模式安装

  1. 进入spark 压缩包所在目录,我的目录为~/Documents/Personal File/BigData,解压文件到目录 /usr/local/,并重命名为spark,设置权限.
cd ~/Documents/Personal\ File/BigData
sudo tar -zxf ./spark-2.4.5-bin-without-hadoop.tgz -C /usr/local/
cd /usr/local
sudo mv ./spark-2.4.5-bin-without-hadoop/   ./spark
sudo chown -R hadoop:hadoop ./spark
  1. 配置文件spark-env.sh;
cd /usr/local/saprk
cp ./conf/spark-env.sh.template ./conf/spark-env.sh
vim ./conf/spark-env.sh

在文件中添加如下配置信息:

export SPARK_DIST_CLASSPATH=$(/usr/local/hadoop/bin/hadoop classpath)

三. Spark Shell 编程

  1. 启动shell
cd /usr/local/spark
bin/spark-shell

在这里插入图片描述

  1. 简单的编程测试
    spark创建sc,加载本地文件创建RDD,也可以加载HDFS 文件.通过 前缀(hdfs://和file:///) 进行标识是本地文件还是HDFS文件;
val textFile = sc.textFile("file:///usr/local/spark/README.md")
//获取RDD文件textFile的第一行内容
textFile.first()
//获取RDD文件textFile所有项的计数
textFile.count()
//抽取含有“Spark”的行,返回一个新的RDD
val lineWithSpark = textFile.filter(line => line.contains("Spark"))
//统计新的RDD的行数
lineWithSpark.count()
//找出文本中每行的最多单词数
textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)

在这里插入图片描述

  1. 退出Spark .
:quit

四. Scala 独立应用编程
使用scala 编写的程序需要使用sbt进行编译打包,使用java编写的代码需要通过maven 打包,使用python 编写的代码可以直接通过spark-submit 直接提交.

  1. sbt 安装
sudo mkdir /usr/local/sbt
sudo tar -zxvf ~/Documents/Personal\ File/BigData/sbt-1.3.8.tgz -C /usr/local
cd /usr/local/sbt
sudo chown -R hadoop /usr/local/sbt
cp ./bin/sbt-launch.jar ./  #把bin目录下的sbt-launch.jar复制到sbt安装目录下
  1. 创建sbt 的启动脚本.
vim /usr/local/sbt/sbt#添加如下内容:
#!/bin/bash
SBT_OPTS="-Xms512M -Xmx1536M -Xss1M -XX:+CMSClassUnloadingEnabled -XX:MaxPermSize=256M"
java $SBT_OPTS -jar `dirname $0`/sbt-launch.jar "$@"
  1. 为文件添加可执行权限.
chmod u+x /usr/local/sbt/sbt
  1. 查看sbt 版本信息,这个步骤第一次执行时间很长,还有可能执行不成功.
 cd /usr/local/sbt./sbt/ sbtVersion

在这里插入图片描述

  1. scala 编程及其打包

创建一个目录作为应用程序根目录.并创建文件结构目录;

# 进入一个目录,创建相关目录
cd ~/Documents/Personal\ File/BigData# 创建根目录及其结构
mkdir ./sparkapp        # 创建应用程序根目录
mkdir -p ./sparkapp/src/main/scala   # 创建所需的文件夹结构# 创建代码文件
vim ./sparkapp/src/main/scala/SimpleApp.scala

编写代码如下:

/* SimpleApp.scala */
import org.apache.spark.SparkContext
import org.apache.spark.SparkContext._
import org.apache.spark.SparkConfobject SimpleApp {def main(args: Array[String]) {val logFile = "file:///usr/local/spark/README.md" // Should be some file on your systemval conf = new SparkConf().setAppName("Simple Application")val sc = new SparkContext(conf)val logData = sc.textFile(logFile, 2).cache()val numAs = logData.filter(line => line.contains("a")).count()val numBs = logData.filter(line => line.contains("b")).count()println("Lines with a: %s, Lines with b: %s".format(numAs, numBs))}}
  1. 编译打包文件
cd ~/Documents/Personal\ File/BigData/sparkapp
vim simple.sbt

添加内容,scalaVersion指定scala 的版本,spark-core 指定spark的版本.可以通过spark 的shell登录界面获取到版本信息.
在这里插入图片描述

name := "Simple Project"
version := "1.0"
scalaVersion := "2.11.12"
libraryDependencies += "org.apache.spark" %% "spark-core" % "2.4.5"

使用sbt打包文件,为保证sbt正常运行,通过如下命令查看文件结构.

cd ~/Documents/Personal\ File/BigData/sparkapp
find .

在这里插入图片描述
执行打包命令,生成的 jar 包的位置为 ~/Documents/Personal\ File/BigData/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar。

/usr/local/sbt/sbt package

在这里插入图片描述

通过spark-submit 来提交程序运行.
在这里插入图片描述

/usr/local/spark/bin/spark-submit --class "SimpleApp" ~/Documents/Personal\ File/BigData/sparkapp/target/scala-2.11/simple-project_2.11-1.0.jar

在这里插入图片描述

五. Java 独立编程

  1. 安装Java 编译打包工具maven ;
cd ~/Documents/Personal\ File/BigData
sudo unzip apache-maven-3.6.3-bin.zip -d /usr/local
cd /usr/local
sudo mv apache-maven-3.6.3/ ./maven
sudo chown -R hadoop ./maven
  1. Java 应用程序代码
    创建应用程序根目录;
cd ~/Documents/Personal\ File/BigData
mkdir -p ./sparkapp2/src/main/java

在./sparkapp2/src/main/java下创建代码文件.

/*** SimpleApp.java ***/
import org.apache.spark.api.java.*;
import org.apache.spark.api.java.function.Function;
import org.apache.spark.SparkConf;public class SimpleApp {public static void main(String[] args) {String logFile = "file:///usr/local/spark/README.md"; // Should be some file on your systemSparkConf conf=new SparkConf().setMaster("local").setAppName("SimpleApp");JavaSparkContext sc=new JavaSparkContext(conf);JavaRDD<String> logData = sc.textFile(logFile).cache(); long numAs = logData.filter(new Function<String, Boolean>() {public Boolean call(String s) { return s.contains("a"); }}).count(); long numBs = logData.filter(new Function<String, Boolean>() {public Boolean call(String s) { return s.contains("b"); }}).count(); System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs);}
}

在./sparkapp2目录中新建文件pom.xml.

cd ~/Documents/Personal\ File/BigData/sparkapp2
vim pox.xml
<project><groupId>cn.edu.xmu</groupId><artifactId>simple-project</artifactId><modelVersion>4.0.0</modelVersion><name>Simple Project</name><packaging>jar</packaging><version>1.0</version><repositories><repository><id>jboss</id><name>JBoss Repository</name><url>http://repository.jboss.com/maven2/</url></repository></repositories><dependencies><dependency> <!-- Spark dependency --><groupId>org.apache.spark</groupId><artifactId>spark-core_2.11</artifactId><version>2.4.5</version></dependency></dependencies>
</project>  
  1. 使用maven 打包Java 程序
    为保证maven 正常运行,通过find 查看文件结构:
cd ~/Documents/Personal\ File/BigData/sparkapp2
find .# 打包命令
/usr/local/maven/bin/mvn package

在这里插入图片描述

  1. 通过spark-submit 运行程序.
/usr/local/spark/bin/spark-submit --class "SimpleApp"  ./target/simple-project-1.0.jar

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/484145.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SpringBoot集成Spring Security(一)登录注销

同个人网站 https://www.serendipper-x.cn/&#xff0c;欢迎访问 &#xff01; SpringBoot集成Spring Security&#xff08;二&#xff09;注册 、密码加密、修改密码 写在前面 Spring Security是一种基于 Spring AOP 和 Servlet 过滤器的安全框架。它提供全面的安全性解决方案…

什么是1+N模式的新一代城市大脑建设方案

来源&#xff1a;城市大脑全球标准研究组前言&#xff1a;2021年上半年&#xff0c;我们在城市大脑的最新探索和研究中&#xff0c;提出了1N模式的新一代城市大脑建设方案。其中“1”是世界统一标准的城市神经元网络&#xff0c;“N”是N条城市云反射弧&#xff0c;这是基于互联…

图计算-Pregel-Hama

一.图计算简介 1.1 图计算是专门针对图结构数据的处理&#xff0e; 许多大数据都是以大规模图或网络的形式呈现&#xff1b;许多非图结构的大数据&#xff0c;也常常被转换为图模型后进行分析&#xff1b;图结构很好地表达了数据之间的关联性&#xff1b;关联性计算是大数据计…

英伟达推出全球首个元宇宙平台,豪砸数亿是为什么?

来源&#xff1a;AI科技大本营(ID:rgznai100)编译&#xff1a;禾木木翻译&#xff1a;AI科技大本营NVIDIA 在 SIGGRAPH 推出首个全球元宇宙平台&#xff0c;并赢得了最佳展示奖。目前处于公测阶段&#xff0c;它对 NVIDIA RTX 和 GeForce RTX GPU 用户免费开放。用户在安装完 N…

长链剖分题表

长链剖分&#xff0c;类似于重链剖分(dsu on tree)的一种替代算法。最广泛的用法是优化与深度有关的树上DP&#xff0c;以及处理一些与点分治类似的问题。有一部分长链剖分题也可以用dsu on tree做&#xff0c;单复杂度往往会多一个log。 每个点找到高度最大的儿子作为自己的重…

流计算

一.概述 实时获取来自不同数据源的海量数据经过实时分析处理&#xff0c;或的有价值的信息&#xff0e; 1.数据的处理流程 静态数据:数据不会发生变化&#xff0c;如数据仓库中的数据&#xff1b;流数据:数据以大量&#xff0c;快速&#xff0e;时变的流形式持续到达&#xf…

SpringBoot集成Spring Security(二)注册 、密码加密、修改密码

SpringBoot集成Spring Security&#xff08;一&#xff09;登录注销 写在前面 上一节创建了项目并且利用Spring Security完成了登录注销功能&#xff0c;这里继续说一下注册、密码加密和找回密码&#xff0c;代码注释较清晰。 一、web层 控制 StudentController.java package …

自动驾驶需要做哪些测试?

来源&#xff1a;广电计量&#xff0c;文&#xff1a;李梓熙、王闻彦参考资料来源&#xff1a;《有问必答 | 自动驾驶汽车之道路“测试”与“考试”》by公安部交通管理科研所微发布自动驾驶已然成为汽车行业热词。在大家殷切的期盼下&#xff0c;近几年上市的车型&#xff0c;多…

大数据的应用-UserCF和ItemCF推荐算法

一.推荐系统 1.1 推荐系统是大数据在互联网领域的典型应用&#xff0c;它可以通过分析用户的历史记录来了解用户的喜好&#xff0c;从而主动的为用户推荐其感兴趣的信息&#xff0c;满足用户的个性化推荐需求&#xff0e; 1.2 推荐系统是自动联系用户和物品的一种工具&#x…

计算机网络之Web应用

1、web与HTTP world Wide Web&#xff1a; 网页 网页互相链接 网页包含多个对象&#xff1a; 对象&#xff1a; HTML文件、JPEG图片、视频文件、动态脚本等 基本HTML文件&#xff1a; 包含对其他对象引用的链接 对象的寻址&#xff1a; URL&#xff08;Uniform Resource Locato…

HBase错误解决(启动Hbase出现错误的替换,启动hbase shell出现ERROR KeeperErrorCode=NoNode for /hbase/master)

&#xff11;&#xff0e;问题描述 我查阅资料发现&#xff0c;网上很多人和我出现相同的错误&#xff0c;却没有一个可以解决的教程&#xff0c;于是我在解决了我的一个错误后就立即写了这篇文章&#xff0c;需要能帮到一些人&#xff0c;文章不一定对每个人都有效&#xff0c…

如何使用jmeter进行并发登录测试

第一种方案直接从数据库中获取账号和密码 1、设置线程数为20 &#xff0c;我们的并发用户量就是20个用户同时登录 2、添加定时器 3、设置集合点&#xff0c;当用户数量达到20个的时候再同时请求进行登录操作 4、添加配置元件&#xff1a;JDBC Connection Configuration 5、添加…

云计算与分布式系统课程学习笔记(一)——云计算简介

大数据对于系统架构的需求 显式的需求 海量计算和存储快速计算 隐式的需求 数据的快速传输灵活性低成本 如何实现这些需求&#xff1f; 并行化&#xff08;并行化的理念存在于计算机方方面面&#xff09; 并行请求&#xff08;分配给多个计算机&#xff09;并行线程&…

DeepMind用神经网络求解MIP后,攻破运筹学只是时间问题?你想多了

来源&#xff1a;杉数科技作者&#xff1a;皇甫琦、葛冬冬、杉数科技COPT开发组Google的DeepMind团队最近官宣了一篇神经网络(Neural Networks)求解MIP论文。一石激起千层浪&#xff0c;在国内外的运筹优化社群引起了讨论。部分围观吃瓜群众纷纷表示&#xff1a;"This is …

计算机视觉-SIFT

一.SIFT(Scale Invariant Feature Transform) 算法 1.图像尺度空间 要让计算机能够对物体在不同尺度下有一个统一的认知&#xff0c;就要需要考虑图像在不同尺度(远近&#xff0c;大小&#xff0c;颜色区别等)下存在的特点&#xff0e;尺度空间的获取通常使用高斯模糊来实现&…

世界上最好的光刻机为什么来自荷兰?【物联网智商精选】

来源: 大数据实验室“是说芯语”已陪伴您439天现在微电子集成电路技术对世界的各种科技电子产品越来越应用广泛了&#xff0c;一个国家的发展越来越离不开高端芯片了&#xff0c;一个国家越是发展得越快对高端芯片需求量越大&#xff0c;比如我国的芯片需求占世界的50&#xff…

云计算与分布式系统课程学习笔记(二)——Linux基本命令的使用与熟悉

&#xff08;1&#xff09; jps 【显示当前系统的java进程情况&#xff0c;及其id号】 -q只显示pid&#xff0c;不显示class名称,jar文件名和传递给main方法的参数-m输出传递给main方法的参数-l输出主类的完整包名或者jar文件完整路径名-v输出传递给JVM的参数 编写一个JSPDemo…

【转】为了修复打码女神脸,他们提出二阶段生成对抗网络EdgeConnect

当图像缺失部分太多的时候&#xff0c;结合多阶段方法和边缘先验信息&#xff0c;这个 GAN 实现了高还原度的图像修复&#xff0c;玩法还不止于此。 在过去几年中&#xff0c;深度学习技术在图像修复方面取得了显着进步。然而&#xff0c;许多这些技术无法重建合理的结构&#…

高等数学、线性代数、概率论、几何这些知识可以用来干什么?

来源&#xff1a;图灵人工智能应该会有很多模友在开始学习数学分析和高等数学时&#xff0c;第一反应是&#xff1a;但其实大多数人所用的教材&#xff0c;从大众角度看还没有到一种极致精确的架构数学的程度。大多数的教材所做的还是“我教会你怎么弄这个东西就行了&#xff0…

CentOS7.7安装MySQL5.6并配置环境变量(详细版)

i. tar包下载 官网下载 https://dev.mysql.com/downloads/mysql/网盘获取 链接&#xff1a;https://pan.baidu.com/s/1DpULc0qQ4hqx6HWUwRilpw 提取码&#xff1a;tgdv ii. 安装所需环境 yum -y install make gcc-c cmake bison-devel ncurses-develiii. 解压tar包&#xf…