Win10搭建Pyspark2.4.4+Pycharm开发环境(亲测可用)

news/2024/11/23 2:16:48/

下载资源

  • hadoop3.0.0

  • spark-2.4.4-bin-without-hadoop

  • winutils下载(对应hadoop3.0.1的bin目录覆盖本地hadoop的bin目录)

  • jdk1.8(默认已按照配置)

  • conda/anaconda(默认已安装)

注意:cdh6.3.2的spark为2.4.0但是使用2.4.0本地pyspark有bug,下载的文件可能在第一次解压缩后,如未出现目录,则需要修改文件后缀为zip,再次解压缩

python环境(推荐cmd非powershell)

spark2.4.x不支持python3.7以上版本

conda create -n pyspark2.4 python=3.7
activate pyspark2.4
pip install py4j
pip install psutil

pyspark安装方法(推荐一)

  1. %SPARK_HOME%\python\pyspark目录复制到%CONDA_HOME%\pyspark2.4\Lib\site-packages下

  1. pip install pyspark=2.4.4

配置环境变量(自行百度)

以下只是示例,根据实际情况修改,路径不要有空格,如果有使用mklink /J 软链接 目录路径

系统变量添加
HADOOP_HOME
E:\bigdata\ENV\hadoop-3.0.0SPARK_HOME
E:\bigdata\ENV\spark-2.4.4-bin-without-hadoopPYSPARK_PYTHON
C:\Users\zakza\anaconda3\envs\pyspark2.4\python.exePATH添加
%HADOOP_HOME%\bin
%SPARK_HOME%\bin

修改配置文件

配置一 %SPARK_HOME%\conf目录下新建spark-env.cmd文件,内容如下

FOR /F %%i IN ('hadoop classpath') DO @set SPARK_DIST_CLASSPATH=%%i

配置二 %SPARK_HOME%\conf\目录下新建log4j.properties文件,内容如下

#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#    http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
## Set everything to be logged to the console
log4j.rootCategory=WARN, console
log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.target=System.err
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{yy/MM/dd HH:mm:ss} %p %c{1}: %m%n# Set the default spark-shell log level to WARN. When running the spark-shell, the
# log level for this class is used to overwrite the root logger's log level, so that
# the user can have different defaults for the shell and regular Spark apps.
log4j.logger.org.apache.spark.repl.Main=WARN# Settings to quiet third party logs that are too verbose
log4j.logger.org.spark_project.jetty=WARN
log4j.logger.org.spark_project.jetty.util.component.AbstractLifeCycle=ERROR
log4j.logger.org.apache.spark.repl.SparkIMain$exprTyper=INFO
log4j.logger.org.apache.spark.repl.SparkILoop$SparkILoopInterpreter=INFO
log4j.logger.org.apache.parquet=ERROR
log4j.logger.parquet=ERROR# SPARK-9183: Settings to avoid annoying messages when looking up nonexistent UDFs in SparkSQL with Hive support
log4j.logger.org.apache.hadoop.hive.metastore.RetryingHMSHandler=FATAL
log4j.logger.org.apache.hadoop.hive.ql.exec.FunctionRegistry=ERROR

配置Pycharm

注意:配置好环境变量重启下电脑,不然可能存在pycharm无法加载系统环境变量的情况

wc.txt

hello hadoop
hadoop spark python
flink storm spark
master slave
first
second thrid
kafka scikit-learn
flume
hive spark-streaming
hbase

wordcount测试代码

from pyspark import SparkContextif __name__ == '__main__':sc = SparkContext('local', 'WordCount')textFile = sc.textFile("wc.txt")wordCount = textFile.flatMap(lambda line: line.split(" ")).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b)wordCount.foreach(print)

正常运行结果:

常见问题:

  1. spark-shell报错Caused by: java.lang.ClassNotFoundException: org.slf4j.Logger

解决方法:见上述配置一

  1. Pyspark报错ModuleNotFoundError: No module named 'resource'

解决方法:spark2.4.0存在的bug,使用spark2.4.4

  1. Pyspark报错org.apache.spark.sparkexception: python worker failed to connect back

解决方法:环境变量未配置正确,检查是否遗漏,并检查pycharm的configuration的环境变量里面能够看到

其他

关于%SPARK_HOME%\python\lib下的py4j-0.10.7-src.zip,pyspark.zip(未配置运行正常),也可以尝试添加到项目


http://www.ppmy.cn/news/25915.html

相关文章

LeetCode-1237. 找出给定方程的正整数解【双指针,二分查找】

LeetCode-1237. 找出给定方程的正整数解【双指针&#xff0c;二分查找】题目描述&#xff1a;解题思路一&#xff1a;双指针。首先我们不管f是什么&#xff0c;即function_id等于什么不管。但是我们可以调用customfunction中的f函数&#xff0c;然后我们遍历x,y(1 < x, y &l…

C++模板(一)

文章目录C模板&#xff08;一&#xff09;1. 泛型编程2. 函数模板2.1 函数模板格式2.2 模板原理2.3 模板实例化2.4 模板参数匹配原则3. 类模板3.1 类模板格式3.2 背景3.3 类模板的实例化C模板&#xff08;一&#xff09; 1. 泛型编程 前面我们学到了函数重载这个特性&#xf…

基础篇—CSS padding(填充\内边距)解析

CSS padding(填充) CSS padding(填充)是一个简写属性,定义元素边框与元素内容之间的空间,即上下左右的内边距。 属性说明padding使用简写属性设置在一个声明中的所有填充属性padding-bottom设置元素的底部填充padding-left设置元素的左部填充padding-right设置元素的右部…

白话C#之委托

一、什么是委托&#xff1f; 书本上是这样来定义委托的&#xff1a; 委托是一种动态调用方法的类型&#xff0c;属于引用型。委托是对方法的抽象和封装。委托对象实质上代表了方法的引用&#xff08;即内存地址&#xff09;。委托通常是委托某个方法来实现具体的功能。当我们调…

SpringBoot社区版专业版带你配置热部署

&#x1f49f;&#x1f49f;前言 ​ 友友们大家好&#xff0c;我是你们的小王同学&#x1f617;&#x1f617; 今天给大家打来的是 SpringBoot社区版专业版带你配置热部署 希望能给大家带来有用的知识 觉得小王写的不错的话麻烦动动小手 点赞&#x1f44d; 收藏⭐ 评论&#x1…

【JavaGuide面试总结】Redis篇·中

【JavaGuide面试总结】Redis篇中1.Redis 单线程模型了解吗&#xff1f;2.Redis6.0 之后为何引入了多线程&#xff1f;3.Redis 是如何判断数据是否过期的呢&#xff1f;4.过期的数据的删除策略了解么&#xff1f;5.Redis 内存淘汰机制了解么&#xff1f;6.什么是 RDB 持久化&…

Python 之 Matplotlib 柱状图(竖直柱状图和水平柱状图)、直方图和饼状图

文章目录一、柱状图二、竖直柱状图1. 基本的柱状图2. 同位置多柱状图3. 堆叠柱状图三、水平柱状图1. 基本的柱状图2. 同位置多柱状图3. 堆叠柱状图四、直方图 plt.hist()1. 返回值2. 添加折线直方图3. 不等距分组4. 多类型直方图5. 堆叠直方图五、饼状图 pie()1. 百分比显示 pe…

cmd 窗口、记事本打开后一片空白且几秒钟后闪退的问题解决方案汇总

前言 前段时间&#xff0c;电脑忽然出现了问题&#xff0c;首先是通过 微软应用商店 Microsoft Store 下载安装的 Snipaste 截图软件崩溃&#xff0c;不过将其卸载后&#xff0c;通过电脑管家下载后又可以正常使用了。 之后就是突然发现&#xff0c;记事本文本文档不能使用了…