Linux CentOS安装PySpark3.5(单机版)详细教程及机器学习实战

目录

一、安装须知

二、安装Spark

1、下载安装包

2、修改配置文件spark-env.sh

3、验证Spark是否安装成功

三、安装py4j

四、配置环境变量

五、基于PySpark的机器学习实战

1、将数据文件上传HDFS

2、创建代码文件

3、提交应用程序


一、安装须知

前置依赖:

JDK 1.8

Hadoop 3.1.3

安装教程可见我的另一篇文章:Linux CentOS安装Hadoop3.1.3(单机版)详细教程

本教程将对以下软件进行安装:

Spark 3.5.2

py4j

二、安装Spark

1、下载安装包

进入下载地址

下载“spark-3.5.2-bin-without-hadoop.tgz”,然后上传到linux服务器上。

或者在服务器使用以下命令下载安装包:

wget https://archive.apache.org/dist/spark/spark-3.5.2/spark-3.5.2-bin-without-hadoop.tgz

将安装包解压:

tar -zxf spark-3.5.2-bin-without-hadoop.tgz -C /opt
mv /opt/spark-3.5.2-bin-without-hadoop/ /opt/spark

2、修改配置文件spark-env.sh

修改配置文件spark-env.sh,命令如下:

cd /opt/spark
cp ./conf/spark-env.sh.template ./conf/spark-env.sh

编辑spark-env.sh文件:

vim ./conf/spark-env.sh

设置SPARK_DIST_CLASSPATH环境变量并保存:

export SPARK_DIST_CLASSPATH=$(/opt/hadoop/bin/hadoop classpath)

通过执行 /opt/hadoop/bin/hadoop classpath 命令获取的 Hadoop 类路径(classpath)。

在 Hadoop 中,classpath 命令用于输出一个命令行,该命令行可以用来设置 Java 的类路径,以便 Hadoop 能够找到它需要的所有库和配置文件。这个命令行通常包含了 Hadoop 的 conf 目录、HDFS 的 data 目录以及 Hadoop 的 lib 目录中的所有 JAR 文件。

将 classpath 命令的输出设置为 SPARK_DIST_CLASSPATH 环境变量,有助于确保 Spark 能够正确地识别和访问 Hadoop 的依赖和配置。这样,Spark 就可以与 Hadoop 协同工作,利用 Hadoop 的文件系统和其他 Hadoop 相关的功能。

3、验证Spark是否安装成功

运行以下命令:

bin/run-example SparkPi

bin/run-example SparkPi”是 Spark 的一个内置测试用例,用于演示如何使用 Spark 计算圆周率π的近似值。

输出结果为:

Pi is roughly 3.1426557132785664

使用 Spark Shell 编写代码:

bin/spark-shell

测试Scala,计算两数之和:

def add(a: Int, b: Int): Int = a + b
val result = add(5, 7)

退出Spark Shell:

:quit

三、安装py4j

py4j是一个 Python 和 Java 之间的桥接库,它允许 Python 代码调用 Java 代码,反之亦然。py4j 提供了丰富的 API,包括 Java 对象与 Python 对象的相互转换、网络通信、日志记录等。它被广泛用于在 Python 环境中集成 Java 库,尤其是在数据科学和机器学习中,因为它使得可以轻松地使用 Java 编写的库,如 Hadoop 和 Spark。

使用以下命令安装py4j:

pip install py4j

四、配置环境变量

在安装 Spark 时还需要配置一些环境变量,为了确保 Spark 能够正确地找到 Hadoop 和 Java 的相关文件,以及配置 Python 环境以支持 PySpark(Spark 的 Python API)。

①编辑~/.bashrc文件:

vim ~/.bashrc

②添加以下内容:

export PATH=$PATH:/opt/hadoop/bin:/opt/hadoop/sbin
export JAVA_HOME=/usr/java8  # 注意,这里写你的java安装目录
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
export HADOOP_HOME=/opt/hadoop
export SPARK_HOME=/opt/spark
export PYTHONPATH=$SPARK_HOME/python:$SPARK_HOME/python/lib/py4j-0.10.9.7-src.zip:$PYTHONPATH
export PYSPARK_PYTHON=python3
export PATH=$HADOOP_HOME/bin:$SPARK_HOME/bin:$PATH

其中,java目录可通过以下命令查看:

which java

③重新加载配置:

source ~/.bashrc

然后,不出意外的话,就可以运行PySpark了

五、基于PySpark的机器学习实战

以下内容基于我的另一篇文章:(四)PySpark3:Mlib机器学习实战-信用卡交易数据异常检测

不同的是,该篇文章使用Windows环境,从本地导入csv文件。本文在linux环境下运行,使用HDFS存储数据文件。

1、将数据文件上传HDFS

数据集“creditcard.csv”中的数据来自2013年9月由欧洲持卡人通过信用卡进行的交易。共284807行交易记录,其中数据文件中Class==1表示该条记录是欺诈行为,总共有 492 笔。输入数据中存在 28 个特征 V1,V2,……V28(通过PCA变换得到,不用知道其具体含义),以及交易时间 Time 和交易金额 Amount。

百度云链接:https://pan.baidu.com/s/1_GLiEEqIZqXVG7M1lcnewg
提取码:abcd

目标:构建一个信用卡欺诈分析的分类器。通过以往的交易数据分析出每笔交易是否正常,是否存在盗刷风险。

将creditcard.csv文件下载后,传到linux服务器上。

创建data目录,存放数据文件:

hdfs dfs -mkdir -p /data

将数据文件上传到HDFS:

hdfs dfs -put creditcard.csv  /data

查看HDFS存储情况:

hdfs dfs -ls /data

2、创建代码文件

创建test.py文件:

vim test.py

将以下代码写入test.py文件:

from pyspark.sql import SparkSession  
from pyspark.ml.feature import VectorAssembler  
from pyspark.ml.classification import LogisticRegression, DecisionTreeClassifier, RandomForestClassifier  
from pyspark.ml.evaluation import BinaryClassificationEvaluator  #初始化SparkSession  
spark = SparkSession.builder.appName("CreditCardFraudDetection").getOrCreate()  # 读取数据  
data = spark.read.csv("hdfs://localhost:9000/data/creditcard.csv", header=True, inferSchema=True)  
data = data.drop('Time', 'Amount').withColumnRenamed("Class","label")# 组装特征向量  
vectorAssembler = VectorAssembler(inputCols=data.columns[:-1], outputCol="features")  
data_with_vector = vectorAssembler.transform(data)  # 分离标签和特征  
label_column = "label"  
features_column = "features"  
data_with_vector = data_with_vector.select(features_column, label_column)  # 划分训练集和测试集  
(train_data, test_data) = data_with_vector.randomSplit([0.7, 0.3], seed=0)  # 计算少数类和多数类的数量  
fraud_count = train_data.filter(train_data[label_column] == 1).count()  
normal_count = train_data.filter(train_data[label_column] == 0).count()  # 下采样多数类以匹配少数类数量  
downsampled_normal = train_data.filter(train_data[label_column] == 0).sample(False, fraud_count / normal_count)  # 合并下采样后的多数类样本和原始的少数类样本  
balanced_train_data = downsampled_normal.union(train_data.filter(train_data[label_column] == 1))  # 训练逻辑回归模型  
lr = LogisticRegression(labelCol=label_column)  
lr_model = lr.fit(balanced_train_data)  
lr_predictions = lr_model.transform(test_data)  
evaluator = BinaryClassificationEvaluator(rawPredictionCol="rawPrediction")
print('逻辑回归AUC分数:', evaluator.evaluate(lr_predictions))# 训练决策树模型  
dt = DecisionTreeClassifier(labelCol=label_column)  
dt_model = dt.fit(balanced_train_data)  
dt_predictions = dt_model.transform(test_data)   
print('决策树AUC分数:', evaluator.evaluate(dt_predictions))# 训练随机森林模型  
rf = RandomForestClassifier(labelCol=label_column)  
rf_model = rf.fit(balanced_train_data)  
rf_predictions = rf_model.transform(test_data)  
print('随机森林AUC分数:', evaluator.evaluate(rf_predictions))spark.stop()

3、提交应用程序

spark-submit test.py

输出结果如下:

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

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

相关文章

Acrobat Pro DC 2023 for Mac/Win:全能型PDF编辑器深度解析

Adobe Acrobat Pro DC 2023作为一款跨平台的PDF编辑器,无论是对于Mac还是Windows用户,都提供了极为全面且强大的PDF处理功能。该软件凭借其卓越的性能和丰富的特性,成为了全球范围内用户处理PDF文档的首选工具。 一、强大的编辑功能 Acroba…

【2024高教社杯全国大学生数学建模竞赛】ABCDEF题 问题分析、模型建立、参考文献及实现代码

【2024高教社杯全国大学生数学建模竞赛】ABCDEF题 问题分析、模型建立、参考文献及实现代码 1 比赛时间 北京时间:2024年9月5日 18:00-2024年9月8日20:00 2 思路内容 2.1 往届比赛资料 【2022高教社杯数学建模】C题:古代玻璃制品的成分分析与鉴别方案…

HBase 部署及shell操作

HBase 数据库 一、HBase 概述1.1 HBase 是什么HBase 的特点 二、HBase 模型及架构2.1 HBase 逻辑模型2.2 HBase 数据模型2.3 HBase 物理模型2.3.1 列簇物理模型2.3.2 Rowkey 字段排序2.3.3 Region 存储到不同节点2.3.4 Region 结构 2.4 HBase 基本架构 三、搭建 HBase 分布式集…

Claude的小白入门指南

要想快速上手Claude AI,其实并没有那么复杂。作为新一代的AI助手,Claude致力于为用户提供高效、无害、透明的交互体验。这篇入门指南将从Claude AI的特点、主要功能和如何实际操作等几个方面为大家做一个详细的介绍。 Claude AI是什么? Claud…

【SRC挖掘】越权漏洞——burp插件被动检测越权漏洞,一个插件让挖洞效率翻倍!Autorize

越权与未授权漏洞 越权漏洞什么是越权漏洞?Autorize插件安装使用步骤拦截过滤器 越权漏洞 什么是越权漏洞? 越权漏洞是指应用程序未对当前用户操作的身份权限进行严格校验,导致用户可以操作超出自己管理权限范围的功能,从而操作…

大模型笔记01--基于ollama和open-webui快速部署chatgpt

大模型笔记01--基于ollama和open-webui快速部署chatgpt 介绍部署&测试安装ollama运行open-webui测试 注意事项说明 介绍 近年来AI大模型得到快速发展,各种大模型如雨后春笋一样涌出,逐步融入各行各业。与之相关的各类开源大模型系统工具也得到了快速…

UnityShader自定义属性特性

前言: 在编写UnityShader时,我们常常会使用特性来更换材质球面板的属性外观,除此之外,还可以使用自定义的扩展脚本来实现自定义的材质球界面,参考我之前的文章UnityShaderUI编辑器扩展 但是自定义扩展每次都要单独写…

性能测试经典案例解析——远程培训系统

各位好,我是 道普云 一站式云测试SaaS平台。一个在软件测试道路上不断折腾十余年的萌新。 欢迎关注我的专栏和我的主页 道普云 文章内容具有一定门槛,建议先赞再收藏慢慢学习,有不懂的问题欢迎私聊我。 希望这篇文章对想提高软件测试水平…

5.sklearn-朴素贝叶斯算法、决策树、随机森林

文章目录 环境配置(必看)头文件引用1.朴素贝叶斯算法代码运行结果优缺点 2.决策树代码运行结果决策树可视化图片优缺点 3.随机森林代码RandomForestClassifier()运行结果总结 本章学习资源 环境配置(必看) Anaconda-创建虚拟环境…

Keil下载烧录程序到单片机提示flash outtime超时

Flash Timeout.Reset the Target and try it again. Error:Flash Download failed - “Cortex-M4” 解决方法: 1.检查杜邦线 2.RESET按键按一下再下载(或者一直按着下载),这样能让单片机进入烧录模式。 3.有外部看门狗,外部看门狗用跳帽屏…

『功能项目』DOTween动态文字【26】

打开上一篇25协程生成怪物模型的项目, 本章要做的事情是用DOTween插件做一个动态文字效果 首先在资源商店中免费下载一个DOTween插件 新建脚本:DowteenFlicker.cs 编写脚本: using DG.Tweening; using UnityEngine; using UnityEngine.UI;pu…

2024 年高教社杯全国大学生数学建模竞赛题目-C 题 农作物的种植策略

根据乡村的实际情况,充分利用有限的耕地资源,因地制宜,发展有机种植产业,对乡村经济 的可持续发展具有重要的现实意义。选择适宜的农作物,优化种植策略,有利于方便田间管理,提 高生产效益&#…

在模板中使用 Django 会话

在 Django 中使用会话(session)可以让你在用户访问网站的过程中存储和访问临时数据。我们可以利用会话在速度计算器的例子中存储和显示上次计算的结果。 1、问题背景 在 Django 中,可以使用会话来存储用户数据。在某些情况下,我们…

Python实战项目:天气数据爬取+数据可视化(完整代码)_python爬虫实战

一、选题的背景 随着人们对天气的关注逐渐增加,天气预报数据的获取与可视化成为了当今的热门话题,天气预报我们每天都会关注,天气情况会影响到我们日常的增减衣物、出行安排等。每天的气温、相对湿度、降水量以及风向风速是关注的焦点。通过…

[数据集][目标检测]翻越栏杆行为检测数据集VOC+YOLO格式512张1类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):512 标注数量(xml文件个数):512 标注数量(txt文件个数):512 标注类别…

datagrip链接sql server2005报错

错误信息 第一次报 DBMS: Microsoft SQL Server (no ver.) Case sensitivity: plainmixed, delimitedexact [08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接。错误:“The server selected protocol version TLS10 is not accepted by client pr…

iPhone无法充电?别急,这几招帮你轻松解决充电难题!

在这个智能手机不离手的时代,iPhone作为众多用户的首选,其续航能力和充电效率自然成为了大家关注的焦点。然而,偶尔遇到iPhone无法充电的情况,确实让人头疼不已。别担心,今天我们就来聊聊iPhone无法充电的几大常见原因…

LeetCode:快乐数(202)

目录 题目 代码思路 双指针 代码实现 题目 202. 快乐数 - 力扣(LeetCode) 编写一个算法来判断一个数 n 是不是快乐数。 [ 快乐数 ] 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程…

echarts地图绘制并实现下钻功能

本文参考网址 使用echarts地图需要先准备好echarts地图渲染需要的json数据&#xff0c;数据可以从阿里云地址中下载自己需要的&#xff0c;下载之后直接引入即可使用&#xff0c;本文针对全国地图做一个简单的demo 阿里云界面如图 // 1、准备echarts地图容器<div class&…

【python面向对象】

一、魔术函数 在Python中&#xff0c;xx()的函数叫做魔法函数&#xff0c;指的是具有特殊功能或者有特殊含义的函数&#xff0c;而且这些函数都是在某种情况下自动调用的。 eg: init函数 __init__() :对象的初始化函数&#xff0c;在创建一个对象的时默认被调用&#xff0c;…