Windows单机安装配置mongodb+hadoop+spark+pyspark用于大数据分析

本文主要是介绍Windows单机安装配置mongodb+hadoop+spark+pyspark用于大数据分析,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

  • 版本选择
  • 安装
  • 配置
    • Java环境配置
    • Hadoop配置
    • Spark配置
  • 安装pyspark
  • 使用Jupyter Notebook进行Spark+ MongoDB测试
  • 参考

版本选择

根据Spark Connector:org.mongodb.spark:mongo-spark-connector_2.13:10.3.0 的前提要求
在这里插入图片描述
这里选择使用最新的MongoDB 7.0.12社区版
https://www.mongodb.com/try/download/community

Spark使用最新的3.5.2
https://dlcdn.apache.org/spark/spark-3.5.2/spark-3.5.2-bin-hadoop3.tgz
官网下载比较慢,可以从阿里镜像源下载:
https://mirrors.aliyun.com/apache/spark/spark-3.5.2/?spm=a2c6h.25603864.0.0.52d721049dSJJZ
在这里插入图片描述

Java使用Java8最新更新
https://www.oracle.com/cn/java/technologies/javase/javase8u211-later-archive-downloads.html

PySpark 一般会与 Hadoop 环境一起运行 , 如果在 Windows 中没有安装 Hadoop 运行环境 , 就会报错误 ;
Hadoop 发布版本在https://hadoop.apache.org/releases.html 页面可下载 ;
官网下载比较慢,可以从阿里镜像源下载:
https://mirrors.aliyun.com/apache/hadoop/common/hadoop-3.3.6/

winutils.exe是一个Windows平台上的实用工具,它是Apache Hadoop项目的一部分。Apache Hadoop是一个开源的分布式计算框架,用于处理大规模数据集的分布式存储和处理。winutils.exe主要用于在Windows环境下运行Hadoop相关的任务和操作。

winutils可以从如下github仓库下载:
https://github.com/cdarlint/winutils
在这里插入图片描述
由于winutils最新只支持hadoop-3.3.6,所以上面Hadoop下载的也是这个版本而不是最新版;

都下载后如下图
在这里插入图片描述

安装

mongodb和jdk直接按默认选项安装即可。

配置

Java环境配置

参考文章:Windows如何安装JDK
来自 https://blog.csdn.net/lcl17779740668/article/details/137992141?spm=1001.2014.3001.5502

Win+R键打开运行窗口,输入cmd,命令行串口输入java -version验证是否安装成功。

Hadoop配置

Hadoop下载后,解压即可,然后记录解压后的路径并配置环境变量
系统变量创建HADOOP_HOME变量值:hadoop安装的路径
系统变量中的Path添加:%HADOOP_HOME%\bin

将上面下载的winutils中的hadoop-3.3.6/bin文件夹下的所有文件复制到对应%HADOOP_HOME%\bin文件夹中并替换原有文件。

Win+R键打开运行窗口,输入cmd,命令行串口输入hadoop -version验证是否安装成功。

可能遇到的报错:“Error JAVA_HOME is incorrectly set.”
根因:JAVA_HOME的值有空格
解决方式一:修改系统环境变量C:\Program Files\Java\jdk-1.8为:C:\Progra~1\Java\jdk-1.8
解决方式二:直接更改hadoop对应etc\hadoop\hadoop-env.cmd 脚本中的 JAVA_HOME 为C:\Progra~1\Java\jdk-1.8
在这里插入图片描述
参考:DOS命令空格问题解决办法
来自 https://blog.csdn.net/youdaodao/article/details/89473558

Spark配置

Spark下载后,解压即可,然后记录解压后的路径并配置环境变量
新建系统变量》变量名:SPARK_HOME 变量值:spark安装的路径

系统变量path中新建两个变量值 %SPARK_HOME%\bin %SPARK_HOME%\sbin

Win+R键打开运行窗口,输入cmd,命令行串口输入spark-shell检查spark是否安装成功

安装pyspark

python环境使用的是python 3.8.10
pip install pyspark
在这里插入图片描述

使用Jupyter Notebook进行Spark+ MongoDB测试

from pyspark.sql import SparkSessionmy_spark = SparkSession \.builder \.appName("myApp") \.config("spark.mongodb.read.connection.uri", "mongodb://localhost:27017/local.startup_log") \.config("spark.mongodb.write.connection.uri", "mongodb://localhost:27017/local.FSHeight") \.config("spark.jars.packages", "org.mongodb.spark:mongo-spark-connector_2.13:10.3.0") \.getOrCreate()
dataFrame = my_spark.read.format("mongodb").load()
dataFrame.printSchema()

从local.startup_log读取数据,printSchema输出正常。

dataFrame.show()
dataFrame.count()

以上两个方法均报错:

Py4JJavaError: An error occurred while calling o42.showString.
: java.lang.NoSuchMethodError: org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.resolveAndBind(Lscala/collection/immutable/Seq;Lorg/apache/spark/sql/catalyst/analysis/Analyzer;)Lorg/apache/spark/sql/catalyst/encoders/ExpressionEncoder;at com.mongodb.spark.sql.connector.schema.SchemaToExpressionEncoderFunction.apply(SchemaToExpressionEncoderFunction.java:97)at com.mongodb.spark.sql.connector.schema.RowToInternalRowFunction.<init>(RowToInternalRowFunction.java:41)at com.mongodb.spark.sql.connector.schema.BsonDocumentToRowConverter.<init>(BsonDocumentToRowConverter.java:100)at com.mongodb.spark.sql.connector.read.MongoBatch.<init>(MongoBatch.java:47)at com.mongodb.spark.sql.connector.read.MongoScan.toBatch(MongoScan.java:79)at org.apache.spark.sql.execution.datasources.v2.BatchScanExec.batch$lzycompute(BatchScanExec.scala:45)at org.apache.spark.sql.execution.datasources.v2.BatchScanExec.batch(BatchScanExec.scala:45)at org.apache.spark.sql.execution.datasources.v2.BatchScanExec.inputPartitions$lzycompute(BatchScanExec.scala:59)at org.apache.spark.sql.execution.datasources.v2.BatchScanExec.inputPartitions(BatchScanExec.scala:59)at org.apache.spark.sql.execution.datasources.v2.DataSourceV2ScanExecBase.supportsColumnar(DataSourceV2ScanExecBase.scala:179)at org.apache.spark.sql.execution.datasources.v2.DataSourceV2ScanExecBase.supportsColumnar$(DataSourceV2ScanExecBase.scala:175)at org.apache.spark.sql.execution.datasources.v2.BatchScanExec.supportsColumnar(BatchScanExec.scala:36)at org.apache.spark.sql.execution.datasources.v2.DataSourceV2Strategy.apply(DataSourceV2Strategy.scala:147)at org.apache.spark.sql.catalyst.planning.QueryPlanner.$anonfun$plan$1(QueryPlanner.scala:63)at scala.collection.Iterator$$anon$11.nextCur(Iterator.scala:486)at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:492)at scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:491)

报错对应的是如下位置
在这里插入图片描述
从spark-3.5.2-bin-hadoop3\jars路径下找到了spark-sql_2.12-3.5.2.jar。
解压缩后发现并没有对应的org.apache.spark.sql.catalyst.encoders.ExpressionEncoder.resolveAndBind
在这里插入图片描述
根因就在这里
在这里插入图片描述
因为下载的spark编译包中spark-3.5.2-bin-hadoop3\jars都是基于scala 2.12的,
将org.mongodb.spark:mongo-spark-connector_2.13:10.3.0换成org.mongodb.spark:mongo-spark-connector_2.12:10.3.0问题解决

from pyspark.sql import SparkSessionmy_spark = SparkSession \.builder \.appName("myApp") \.config("spark.mongodb.read.connection.uri", "mongodb://localhost:27017/local.startup_log") \.config("spark.mongodb.write.connection.uri", "mongodb://localhost:27017/local.FSHeight") \.config("spark.jars.packages", "org.mongodb.spark:mongo-spark-connector_2.13:10.3.0") \.getOrCreate()
# 从上述spark.mongodb.read.connection.uri读取数据    
df = my_spark.read.format("mongodb").load()
# 将读取的数据写入上述spark.mongodb.write.connection.uri,mode可选overwrite or append
df.write.format("mongodb").mode("overwrite").save()
# 重新从数据库读取数据,并查看
dataFrame = my_spark.read\.format("mongodb")\.option("database", "local")\.option("collection", "FSHeight")\.load()
dataFrame.printSchema()
dataFrame.count()
dataFrame.show()

有一个类似案例,也是可能跟spark版本有关系
https://blog.csdn.net/qq_38345222/article/details/88750174

参考

https://www.cnblogs.com/lcl-cn/p/18182316
https://cloud.tencent.com/developer/article/2338486

这篇关于Windows单机安装配置mongodb+hadoop+spark+pyspark用于大数据分析的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1096757

相关文章

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

nginx 负载均衡配置及如何解决重复登录问题

《nginx负载均衡配置及如何解决重复登录问题》文章详解Nginx源码安装与Docker部署,介绍四层/七层代理区别及负载均衡策略,通过ip_hash解决重复登录问题,对nginx负载均衡配置及如何... 目录一:源码安装:1.配置编译参数2.编译3.编译安装 二,四层代理和七层代理区别1.二者混合使用举例

Java JDK1.8 安装和环境配置教程详解

《JavaJDK1.8安装和环境配置教程详解》文章简要介绍了JDK1.8的安装流程,包括官网下载对应系统版本、安装时选择非系统盘路径、配置JAVA_HOME、CLASSPATH和Path环境变量,... 目录1.下载JDK2.安装JDK3.配置环境变量4.检验JDK官网下载地址:Java Downloads

SQL server数据库如何下载和安装

《SQLserver数据库如何下载和安装》本文指导如何下载安装SQLServer2022评估版及SSMS工具,涵盖安装配置、连接字符串设置、C#连接数据库方法和安全注意事项,如混合验证、参数化查... 目录第一步:打开官网下载对应文件第二步:程序安装配置第三部:安装工具SQL Server Manageme

Linux下进程的CPU配置与线程绑定过程

《Linux下进程的CPU配置与线程绑定过程》本文介绍Linux系统中基于进程和线程的CPU配置方法,通过taskset命令和pthread库调整亲和力,将进程/线程绑定到特定CPU核心以优化资源分配... 目录1 基于进程的CPU配置1.1 对CPU亲和力的配置1.2 绑定进程到指定CPU核上运行2 基于

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

SpringBoot线程池配置使用示例详解

《SpringBoot线程池配置使用示例详解》SpringBoot集成@Async注解,支持线程池参数配置(核心数、队列容量、拒绝策略等)及生命周期管理,结合监控与任务装饰器,提升异步处理效率与系统... 目录一、核心特性二、添加依赖三、参数详解四、配置线程池五、应用实践代码说明拒绝策略(Rejected

SQL Server配置管理器无法打开的四种解决方法

《SQLServer配置管理器无法打开的四种解决方法》本文总结了SQLServer配置管理器无法打开的四种解决方法,文中通过图文示例介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录方法一:桌面图标进入方法二:运行窗口进入检查版本号对照表php方法三:查找文件路径方法四:检查 S