SparkBase

1. spark的基本介绍

1.1 spark的基本介绍

  • MapReduce: 分布式计算引擎
 MR 分布式计算引擎, 可以用来处理大规模数据, 主要是用于批处理, 用于离线处理MR存在弊端: 1- 执行效率比较低2- API相对比较低级, 开发效率慢3- 执行迭代计算不方便

也正因为MR存在这样的一些弊端 在一些场景中, 希望能够有一款执行效率更加高效, 能够更好支持迭代计算, 同时还能够处理大规模数据的一款新的软件, 而spark就是在这样的背景下产生了

Apache spark 是一款用于处理大规模数据的分布式计算引擎, 基于内存计算, 整个spark的核心数据结构: RDD

RDD: 弹性的分布式数据集

Spark 最早期是来源于 加州大学伯克莱分析一帮博士发布的论文,而产生的, 后期贡献给了apache 称为apache的顶级项目: http://spark.apache.org

Spark采用Scala语言编写的

为什么Spark的执行速度快:

原因一: spark 提供了一个全新的数据结构: RDD通过这个数据结构, 让分布式执行引擎能够在内存中进行计算, 同时能够更好的进行迭代计算操作对于MR来说, 主要是基于磁盘来计算, 而且迭代计算的时候, 需要将多个MR程序串联, 执行效率低原因二: Spark是基于线程运行的, MR是基于进程运行的线程的启动和销毁的速度, 要远远高于进程的启动和销毁

1.2 spark的发展史

关注:

 spark是一个分布式计算引擎, pyspark是一个python的库  专门用于操作spark的库

1.3 spark的特点

  • 1- 运行速度快
方面一: 基于内存计算的 采用DAG 有向无环图 进行计算操作 中间的结果是保存在内存中方面二: spark是基于线程来运行的, 线程的启动和销毁要高于进程
  • 2- 易用性
方面一: spark提供多种语言的客户端, 可以基于多种语言来运行spark: 比如 python SQL scala java R ...方面二: spark提供了更加高阶的API, 而且这些API在不同的语言上, 基本上都是一样的, 大大的降低了程序员学习成本
  • 3- 通用型强
spark提供了多种工具库, 用于满足各种计算的场景spark core: spark的核心库,  次重点, 它是学习的基础主要是用于放置spark的核心API, 内存管理API,包括维护RDD的数据结构spark SQL: 通过SQL操作spark计算框架  最为重要的spark streaming:  spark的流式处理, 主要是用于支持流式计算(实时计算) (目前不使用, 整个实时主要是基于flink来完成的) spark MLlib: spark的机器学习库, 主要包括相关算法:  回归  聚类 .... (针对于特点人群)spark graphX: spark的图计算库 比如导航行程规划 (针对于特点人群)

  • 4- 随处运行:
方面一: 编写的spark程序可以运行在不同的资源调度平台:  local yarn平台  spark集群 , 云上的调度平台方面二: spark程序可以和大数据生态圈中各种软件进行集成, 让我们更加方便使用spark对接各个软件

2. spark环境安装

2.1 local模式搭建

local 模式主要是用于本地代码测试操作

本质上就是一个单进程程序, 在一个进程中运行多个线程

类似于pandas , 都是一个单进程程序, 无法处理大规模数据, 只需要处理小规模数据

安装操作, 可以直接参考课件中 部署文档

注意事项:

  • 上传安装包:
 要求: 只要能够上传到 linux的 /export/software 下 那么就是OK的, 用什么方式无所谓如果想使用rz上传:请先安装: yum -y install lrzsz
  • 注意: 如果使用 浏览器访问 node1:4040 无法访问的时候, 尝试去看一下windows本地hosts文件是否有以下配置:

    hosts文件所在位置: C:\Windows\System32\drivers\etc

192.168.88.161 node1 node1.itcast.cn
192.168.88.162 node2 node2.itcast.cn
192.168.88.163 node3 node3.itcast.cn

退出客户端, 禁止使用 ctrl + z (本质挂载后台)

尝试使用以下方式退出: ctrl + cctrl + d:quitquit:exitexit

2.2 PySpark库安装

安装pyspark ,其实就是在python上安装pyspark的库, 要求首先必须先有python环境

发现在虚拟机上, python环境为 2.7.5 , 但是实际是3.8的版本, 需要先安装 python3环境

安装 python环境和pyspark环境, 可以直接参考部署文档即可

扩展: anaconda的常用命令

安装库: conda install  包名    pip  install 包名  卸载库: conda uninstall  包名 pip  uninstall 包名设置anaconda下载的库的镜像地址:
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --set show_channel_urls yes如何使用anaconda构建虚拟环境:
-- 查看当前有那些虚拟环境(沙箱环境)
conda env list
-- 创建一个新的虚拟环境:
conda create 虚拟环境名称 python=python版本号 #创建python3.8.8环境-- 激活当前环境
source activate 虚拟环境名称
或者
conda activate 虚拟环境名称-- 退出当前环境
deactivate 虚拟环境名称 #退出环境
或者
conda deactivate

如何将spark程序, 提交给spark local模式进行执行运行呢?

使用命令:spark-submit简单使用cd /export/server/spark/bin./spark-submit --master local[*] 指定python的spark程序文件 [args参数]案例演示:./spark-submit --master local[2] /export/server/spark/examples/src/main/python/pi.py 10

2.3 spark集群模式架构

3. 基于pycharm完成pySpark入门案例

3.1 pycharm连接远端环境

背景说明:

 一般在企业中, 会存在两套线上环境, 一套环境是用于开发(测试)环境, 一套环境是用于生产环境, 首先一般都是先在开发测试环境上进行编写代码, 并且在此环境上进行测试, 当整个项目全部开发完成后, 需要将其上传到生产环境, 面向用于使用如果说还是按照之前的本地模式开发方案, 每个人的环境有可能都不一致, 导致整个团队无法统一一套开发环境进行使用, 从而导致后续在进行测试 上线的时候, 出现各种各样环境问题pycharm提供了一些解决方案: 远程连接方案, 允许所有的程序员都去连接远端的测试环境的, 确保大家的环境都是统一, 避免各种环境问题发生, 而且由于连接的远程环境, 所有在pycharm编写代码, 会自动上传到远端环境中, 在执行代码的时候, 相当于是直接在远端环境上进行执行操作

操作实现: 本次这里配置远端环境, 指的连接虚拟机中虚拟环境, 可以配置为 base环境, 也可以配置为 pyspark_env虚拟环境, 但是建议配置为 base环境, 因为base环境自带python包更全面一些






创建项目后, 设置自动上传操作

校验是否有pyspark

ok 后, 就可以在项目上创建子项目进行干活了: 最终项目效果图

最后, 就可以在 main中编写今日代码了, 比如WordCount代码即可


扩展: 关于pycharm 专业版 高级功能

  • 1- 直接连接远端虚拟机, 进行文件上传, 下载 查看等等操作

  • 2- 可以模拟shell控制台:

  • 3- 模拟datagrip操作:

3.2 WordCount代码实现_local

3.2.2 编写代码实现


可能存在异常:

异常:  JAVA_HOME is not set出现位置: 当pycharm采用SSH连接远程Python环境时, 启动执行spark程序可能报出原因:  加载不到jdk的位置解决方案:第一步:  可以在linux的 /root/.bashrc 文件中, 添加以下两行内容  (注意需要三台都添加)export JAVA_HOME=/export/server/jdk1.8.0_241export PYSPARK_PYTHON=/root/anaconda3/bin/python第二步: 在代码中, 指定linux中spark所在目录, spark中配置文件, 即可自动加载到: 锁定远端操作环境, 避免存在多个版本环境的问题os.environ['SPARK_HOME'] = '/export/server/spark'os.environ["PYSPARK_PYTHON"]="/root/anaconda3/bin/python"os.environ["PYSPARK_DRIVER_PYTHON"]="/root/anaconda3/bin/python"

3.3 (扩展)部署windows开发环境(不需要做)

  • 1- 第一步: 需要安装Python 环境 , 建议使用anaconda 来安装即可

  • 2- 第二步: 在Python安装pySpark

执行:pip install pyspark==3.1.2

  • 3- 第三步: 配置 hadoop的环境

首先, 需要将 hadoop-3.3.0 放置到一个没有中文, 没有空格的目录下接着将目录中bin目录下有一个 hadoop.dll文件, 放置在c:/windows/system32 目录下  (配置后, 需要重启电脑)最后, 将这个hadoop3.3.0 配置到环境变量中:


配置后, 一定一直点确定退出, 否则就白配置了…

  • 4-第四步: 配置spark本地环境

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b4UnVo3R-1649749704191)(day01_pySparkBase.assets/image-20211011093739472.png)]

首先, 需要将 spark-3.1.2... 放置到一个没有中文, 没有空格的目录下最后, 将这个 spark-3.1.2... 配置到环境变量中:

配置后, 一定一直点确定退出, 否则就白配置了…

  • 5-配置pySpark环境
需要修改环境变量

配置后, 一定一直点确定退出, 否则就白配置了…

  • 6- 配置 jdk的环境:

首先: 需要将 jdk1.8 放置在一个没有中文, 没有空格的目录下接着:要在环境变量中配置 JAVA_HOME, 并在path设置

PySpark 相关基础知识相关推荐

  1. 【生信】基因组学相关基础知识2

    [生信]基因组学相关基础知识2 本文图片来源网络或学术论文,文字部分来源网络与学术论文,仅供学习使用. 目录 [生信]基因组学相关基础知识2 9.细胞增殖与分化的定义和区别 10.有丝分裂与减数分裂 ...

  2. 【RAC】RAC相关基础知识

    [RAC]RAC相关基础知识 1.CRS简介    从Oracle 10G开始,oracle引进一套完整的集群管理解决方案--Cluster-Ready Services,它包括集群连通性.消息和锁. ...

  3. 黑马程序员_JAVA相关基础知识

    ------- android培训.java培训.期待与您交流! -------- JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便 ...

  4. 零件三维缺陷检测相关基础知识

    零件三维缺陷检测相关基础知识 看了几篇文献,总结下来三维缺陷检测的过程,总的来说分为: 零件表面的三维数据获取 根据零件的三维数据信息进行三维重建 目标点云与标准点云的配准 配准后的点云做差得到缺陷信 ...

  5. 6-DoF问题相关基础知识笔记

    6-DoF问题相关基础知识笔记 一.什么是6-DoF,即6个自由度是什么? 二.PnP算法 三.BOP挑战与官方数据集简介 BOP数据集 BOP toolkit BOP挑战的介绍页面 四.相关论文 C ...

  6. 【C++后台开发面经】面试总结第三波:针对后台开发相关基础知识分类总结

    前言 面试总结第三波,关于后台开发面试相关基础知识,数据结构.算法.linux操作系统.计算机网络.C++.数据库进行分类总结. 后端面试总结 目录 后端面试总结 1.数据结构 链表和数组的区别 树的 ...

  7. mysql bdb版本_深入理解mysql之BDB系列(1)---BDB相关基础知识

    深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富 一:BDB体系结构 1.1.BDB体系结构 BDB总体的体系结构如图1.1所看到的,包括五个子系统(见图1.1中相关数). ...

  8. 深入理解mysql之BDB系列(1)---BDB相关基础知识

        深入理解mysql之BDB系列(1) ---BDB相关基础知识 作者:杨万富 一:BDB体系结构 1.1.BDB体系结构 BDB整体的体系结构如图1.1所示,包含五个子系统(见图1.1中相关数 ...

  9. 多核程序设计的相关基础知识----以误差扩散算法为例

        本文从基础入手,主要阐述基于桌面电脑的多核程序设计的基础知识,包括一些向量化运算,虚拟机算,多线程等的相关知识总结. 一.计算平台的分类 单指令单数据流机器(SISD) 传统的串行计算机,所有 ...

最新文章

  1. Google Test(GTest)使用方法和源码解析——概况
  2. 为SharePoint 2010创建Application Page
  3. 我的node+express小例子
  4. “这块布的艺术成分都几高唧!”“有几高啊?”“三、四层楼那么高啦。”...
  5. linux c当程序接受来自按键q或q后退出程序_Linux 命令行 整理(四)
  6. 页面嵌入Windows Media Player需要注意的
  7. 【Java开发规范】hashCode 和 equals 的处理规则
  8. 因严重缺陷,Rust 撤销所有 Crates 包的 API 令牌
  9. NSUserDefaults 的用法
  10. linux修改max user processes limits
  11. PHP函数和MySQL数据库
  12. java计算机毕业设计ssm办公耗材采购管理系统
  13. 动手学习深度学习笔记
  14. 核磁共振电子计算机断层扫描术,计算机断层扫描(CT)和核磁共振(MRI) 的区别...
  15. LINUX HTB队列规定用户指南
  16. unturend服务器修改背包,未转变者如何修改背包容量 | 手游网游页游攻略大全
  17. php rewind函数,函数rewind的作用是什么
  18. 长理2019选拔赛1.0
  19. 看看电销外呼系统排行,选择哪家外呼公司靠谱?
  20. Java 12 来了,我们应该采用嘛?

热门文章

  1. python+vue 健康体检预约管理系统
  2. php 开启常驻进程,swoole如何常驻进程
  3. 2023年西安电子科技大学微电子学院集成电路工程专业考研经验分享
  4. 顺序Gauss 消元法
  5. 一键导入excel到数据库的最佳实践
  6. Odin Inspector 系列教程 --- Odin Static Inspector 使用
  7. 滴滴(夜莺)Nightingale监控部署
  8. 【Linux 中国】12 款简单好用的保护隐私的软件
  9. GBase 8a MPP数据库JDBC驱动IPv6设置
  10. python paramiko_Python Paramiko模块的使用实际案例