您现在的位置是:首页 > 正文

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

2024-04-01 03:05:38阅读 1

下载资源

  • 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.0

SPARK_HOME
E:\bigdata\ENV\spark-2.4.4-bin-without-hadoop

PYSPARK_PYTHON
C:\Users\zakza\anaconda3\envs\pyspark2.4\python.exe

PATH添加
%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 SparkContext

if __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(未配置运行正常),也可以尝试添加到项目

网站文章

  • The web services enumeration components are not available

    The web services enumeration components are not available

    The web services enumeration components are not available Error Message:The web services enumeration components are not available. You need to reinstall Visual Stu...

    2024-04-01 03:05:30
  • 【华为机试 Python实现】HJ37 统计每个月兔子的总数

    有一种兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子。例子:假设一只兔子第3个月出生,那么它第5个月开始会每个月生一只兔子。 一月的时候有一只兔子,假如兔子都不死,问第n个月的兔子总数为多少?数据范围: 输入满足 1≤n≤31输入描述: 输入一个int型整数表示第n个月输出描述: 输出对应的兔子总数输入: 3输出: 2......

    2024-04-01 03:04:50
  • Hibernate对象生命周期

    hibernate对象生命周期对象三种状态  hibernate对象三种状态:1、瞬时态transient   new了一个对象,此时对象就是瞬时态   瞬时态对象和数据库记录没有对关系,和session没有关系。    2、持久态persistent   瞬时态对象执行save变化持久层   持久态对象和数据库记录存在对应关系,和session

    2024-04-01 03:04:43
  • 也谈一下Activiti工作流节点的自由跳转

    最近在搞openwebflow的工作流节点自由跳转功能,在网上看了一些资料,感觉不是很好,总结原因如下:直接手动调用SqlSession的操作,感觉会漏掉一些重要的初始化操作(如:启动新节点之后加载其...

    2024-04-01 03:04:35
  • 巨杉数据库再夺“广州独角兽”称号

    巨杉数据库再夺“广州独角兽”称号

    2019年6月14日,由广州市科学技术局指导、广州市科技创新企业协会、《快公司FastCompany》联合主办的2018年独角兽创新企业颁牌暨2019广州“发现独角兽”创新企业项目启动仪式在广东迎宾馆顺利举办。 巨杉数据库再获“独角兽”企业称号。2018年12月,广州市科创企业协会公示了 “独角兽”创新企业榜单遴选结果。榜单涵盖40家企业,覆盖大数据、云计算、信息技术、物联网、生物...

    2024-04-01 03:03:54
  • Spring 依赖注入的处理过程与 DependencyDescriptor 的说明

    Spring 依赖注入的处理过程与 DependencyDescriptor 的说明

    Spring 依赖注入处理的代码入口在DefaultListableBeanFactory#resolveDependency() 方法。该方法第一个参数DependencyDescriptor de...

    2024-04-01 03:03:47
  • 通俗易懂k8s——核心组件

    通俗易懂k8s——核心组件

    核心组件原理 —— pod 核心原理pod 是什么pod 也可以理解是一个容器,装的是 docker/containerd 创建的容器,也就是用来封装容器的一个容器;pod 是一个虚拟化分组, 有自己...

    2024-04-01 03:03:39
  • 实验一 网络基础知识及双绞线制作、访问网络设备实验

    实验一 网络基础知识及双绞线制作、访问网络设备实验

    输入ipconfig/all:可查看本机的网卡有关配置信息:机器名、网卡名称、MAC地址、IP地址、子网掩码、网关、DNS等信息。网络命令ping:测试网络连通性,测试数据包从源地址传输到目标主机所需...

    2024-04-01 03:03:01
  • 审稿中ff是什么意思

    f” 或者“ff”,都是表示引用页数的,意思是:“and following” page or pages,比如 36 ff,表示36页之后的页数被用作参考。如果只有1个f, 90f,就表示90页和91页。

    2024-04-01 03:02:48
  • 中国农业银行计算机专业笔试题,中国农业银行笔试题库

    中国农业银行笔试主要考察EPI、英语、综合知识和职业测评。中国农业银行笔试题库(综合知识部分)1.被誉为生命科学“登月”计划的是( )。A.昆虫脑计划B.蛋白质数据银行计划C.人类和生物圈计划D.人类...

    2024-04-01 03:02:42