Spark 单机环境配置[通俗易懂]

Spark 单机环境配置[通俗易懂]"概要" "Spark 单机环境配置" "JDK 环境配置" "Spark 环境配置" "python 环境配

Spark 单机环境配置

概要

大数据和人工智能已经宣传了好多年, Hadoop 和 Spark 也已经发布了很长时间, 一直想试试, 但是工作也遇不到使用的场景, 就一直拖着. 这次在极客时间上选了蔡元楠老师的《大规模数据处理实战》的课. 其中介绍了很多 Spark 的内容, 就此机会, 也在虚拟机中配置了 Spark 的单机环境.

一方面, 熟悉熟悉 Spark 的用法; 另一方面, 虽然还没有接触到大数据分析的场景, 但是即使是了解了解 Spark 中处理大数据的机制, API 的设计, 也可以开拓平时编程的思路.

Spark 单机环境配置

我是 Debian10 上配置的.

JDK 环境配置

JDK 使用的是 Oracle 的标准 JDK1.8 版本, 国内从 Oracle 官网上下载 JDK 非常慢, 推荐使用华为的 mirror: https://mirrors.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz

下载后, 我是将其解压到 /usr/local 文件夹

$ wget https://mirrors.huaweicloud.com/java/jdk/8u202-b08/jdk-8u202-linux-x64.tar.gz 
$ sudo tar zxvf jdk-8u202-linux-x64.tar.gz -C /usr/local 

代码100分

然后配置环境变量, 如果是 bash, 则配置 ~/.bashrc; 如果是 zsh, 则配置 ~/.zshenv

代码100分# java
export JAVA_HOME=/usr/local/jdk1.8
export PATH=$PATH:$JAVA_HOME/bin

配置好之后, 通过如下命令检查是否安装配置成功:

$ java -version
java version "1.8.0_202"
Java(TM) SE Runtime Environment (build 1.8.0_202-b08)
Java HotSpot(TM) 64-Bit Server VM (build 25.202-b08, mixed mode)

Spark 环境配置

Spark 安装也非常简单, 从官网上下载最新的 packagea, 我下载的最新版本如下:

代码100分$ wget http://mirror.bit.edu.cn/apache/spark/spark-3.0.0-preview2/spark-3.0.0-preview2-bin-hadoop2.7.tgz
$ sudo tar zxvf spark-3.0.0-preview2-bin-hadoop2.7.tgz -C /usr/local

下载后同样, 也解压到 /usr/local 文件夹

Spark 也需要配置相应的环境变量: (同配置 JDK 一样, 根据你使用的是 bash 还是 zsh, 配置环境变量到不同的文件中)

# spark
export SPARK_HOME=/usr/local/spark
export PATH=$PATH:$SPARK_HOME/bin

配置完成后, 在命令行输入如下命令看看是否能成功运行:

$ pyspark
Python 2.7.16 (default, Oct 10 2019, 22:02:15)
[GCC 8.3.0] on linux2
Type "help", "copyright", "credits" or "license" for more information.
20/03/02 15:21:23 WARN Utils: Your hostname, debian-wyb resolves to a loopback address: 127.0.1.1; using 10.0.2.15 instead (on interface enp0s3)
20/03/02 15:21:23 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address
20/03/02 15:21:23 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
/usr/local/spark/python/pyspark/context.py:219: DeprecationWarning: Support for Python 2 and Python 3 prior to version 3.6 is deprecated as of Spark 3.0. See also the plan for dropping Python 2 support at https://spark.apache.org/news/plan-for-dropping-python-2-support.html.
  DeprecationWarning)
Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _ / _ / _ `/ __/  '_/
   /__ / .__/\_,_/_/ /_/\_   version 3.0.0-preview2
      /_/

Using Python version 2.7.16 (default, Oct 10 2019 22:02:15)
SparkSession available as 'spark'.

这里的 pyspark 使用的 2.x 版本的 python, 后续我们配置了 python 环境之后, 会在 python3 下开发

python 环境配置

Debian10 系统中自带了 python2 和 python3 的环境, 为了不影响现有系统的默认环境, 我们安装 virtualenv 来使用 spark

首先, 安装 virtualenv, 并生成一个独立的 python3 环境

$ pip3 install virtualenv
$ virtualenv py3-vm

启动 py3-vm, 并在其中安装 pyspark, 开发 spark 的示例

$ source ./py3-vm/bin/activate
$ pip install pyspark
$ pip install findspark

退出上面的 py3-vm, 使用如下命令:

$ deactive

Spark 使用示例

上述环境都配置之后, 下面用一个简单的例子来尝试 spark 的 API 强大之处. 我们构造一个订单统计的例子:

  1. 数据源: csv 格式的订单文件, 每行 3 个信息, 订单号(不重复), 店铺名称, 订单金额
  2. 订单数统计: 按照店铺统计订单数
  3. 订单金额统计: 按照店铺统计订单金额

示例代码 (order_stat.py)

 1  import findspark
 2  
 3  findspark.init()
 4  
 5  if __name__ == "__main__":
 6      from pyspark.sql import SparkSession
 7      from pyspark.sql.functions import *
 8  
 9      spark = SparkSession
10          .builder
11          .appName('order stat')
12          .getOrCreate()
13  
14      lines = spark.read.csv("./orders.csv",
15                             sep=",",
16                             schema="order INT, shop STRING, price DOUBLE")
17  
18      # 统计各个店铺的订单数
19      orderCounts = lines.groupBy('shop').count()
20      orderCounts.show()
21  
22      # 统计各个店铺的订单金额
23      shopPrices = lines.groupBy('shop').sum('price')
24      shopPrices.show()
25  
26      spark.stop()

测试用的 csv 文件内容 (orders.csv)

1,京东,10.0
2,京东,20.0
3,天猫,21.0
4,京东,22.0
5,天猫,11.0
6,京东,22.0
7,天猫,23.0
8,天猫,24.0
9,天猫,40.0
10,天猫,70.0
11,天猫,10.0
12,天猫,20.0

运行结果

$ python order_stat.py
20/03/02 17:40:50 WARN Utils: Your hostname, debian-wyb resolves to a loopback address: 127.0.1.1; using 10.0.2.15 instead (on interface enp0s3)
20/03/02 17:40:50 WARN Utils: Set SPARK_LOCAL_IP if you need to bind to another address
20/03/02 17:40:50 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
Setting default log level to "WARN".
To adjust logging level use sc.setLogLevel(newLevel). For SparkR, use setLogLevel(newLevel).
+----|-----+
|shop|count|
+----|-----+
|京东|    4|
|天猫|    8|
+----|-----+

+----|----------+
|shop|sum(price)|
+----|----------+
|京东|      74.0|
|天猫|     219.0|
+----|----------+

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/9727.html

(0)
上一篇 2023-02-02
下一篇 2023-02-02

相关推荐

  • 如何退出vim

    如何退出vim Vim是Linux和Unix操作系统中经常使用的强大文本编辑器。它是一个非常灵活的编辑器,由于其广泛的功能和实用性,Vim已经成为了许多开发人员和系统管理员之间使用的首选。在使用Vim时,最常见的问题之一是如何退出编辑器。在本文中,我们将详细介绍如何在不同的情况下退出Vim编辑器。

    2024-05-08
    72
  • 构建和打包Python应用程序的标准方法

    构建和打包Python应用程序的标准方法a href=”https://beian.miit.gov.cn/”苏ICP备2023018380号-1/a Copyright www.python100.com .Some Rights Reserved.

    2024-02-17
    92
  • Python语法:了解Python基本语法规则及编写规范

    Python语法:了解Python基本语法规则及编写规范Python作为一种优美、简洁、易于学习的编程语言,而且拥有强大的库,因而广泛应用于科学计算、机器学习、数据处理等领域。对Python语法的熟悉程度,不仅能帮助我们在开发中发挥Python的优势,还能帮助我们提高代码的可读性和稳定性。本文将从多个方面,详细阐述Python的基本语法规则以及编写规范。

    2024-03-09
    85
  • day05多表查询01「建议收藏」

    day05多表查询01「建议收藏」多表查询 前面讲过的基本查询都是对一张表进行查询,但在实际的开发中远远不够。 下面使用表emp,dept,salgrade进行多表查询 emp: dept: salgrade: 1.前置-mysql表

    2023-06-08
    141
  • [MongoDB]mongodb的命令行操作「建议收藏」

    [MongoDB]mongodb的命令行操作「建议收藏」./mongo1.查看所有数据库show dbs2.切换数据库use 数据库名3.查询所有集合show collections4.查询所有文档db.文档名.find()db.文档名.find().pr

    2023-01-27
    154
  • 用Python创建NumPy数组,进一步进行数据分析和处理

    用Python创建NumPy数组,进一步进行数据分析和处理在Python中,NumPy是一个重要的科学计算库,主要用于处理大型多维数组和矩阵运算。它基于C语言开发,可以提供高效的数据处理能力,并且可以与其他的科学计算库(如SciPy、pandas等)相互配合,实现更加强大的数据分析和处理能力。

    2024-02-08
    97
  • 华为云主机价格_性价比高的组装电脑

    华为云主机价格_性价比高的组装电脑什么云主机既能随时自助获取、可弹性伸缩,价格还不贵,一年只要39元,那必定就是华为云主机,因为其好的售后体验,华为云获得可信云电商云服务奖,云主机获五星+最高评级。下面我们来了解下华为云主机吧。 华为

    2023-05-11
    148
  • MySQL学习总结之路(第二章:表)

    MySQL学习总结之路(第二章:表)目录 MySQL学习总结之路(第一章:服务与数据库管理) MySQL学习总结之路(第二章:表) MySQL学习总结之路(第三章:数据类型) …… 1、创建表 1.1、创建表基本语法: CREA

    2023-04-15
    154

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注