返回顶部
首页 > 资讯 > 精选 >如何在windowns中配置PySpark环境
  • 717
分享到

如何在windowns中配置PySpark环境

2023-06-15 02:06:33 717人浏览 独家记忆
摘要

如何在windowns中配置Pyspark环境?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先需要下载hadoop和spark,解压,然后设置环境变量。hadoop清华源下载

如何在windowns中配置Pyspark环境?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

首先需要下载hadoop和spark,解压,然后设置环境变量。
hadoop清华源下载
spark清华源下载

HADOOP_HOME => /path/hadoopSPARK_HOME => /path/spark

安装pyspark。

pip install pyspark

基本使用

可以在shell终端,输入pyspark,有如下回显:

如何在windowns中配置PySpark环境

输入以下指令进行测试,并创建SparkContext,SparkContext是任何spark功能的入口点。

>>> from pyspark import SparkContext>>> sc = SparkContext("local", "First App")

如果以上不会报错,恭喜可以开始使用pyspark编写代码了。
不过,我这里使用IDE来编写代码,首先我们先在终端执行以下代码关闭SparkContext。

>>> sc.stop()

下面使用PyCharm编写代码,如果修改了环境变量需要先重启pycharm。
在pycharm运行如下程序,程序会起本地模式的spark计算引擎,通过spark统计abc.txt文件中a和b出现行的数量,文件路径需要自己指定。

from pyspark import SparkContextsc = SparkContext("local", "First App")logFile = "abc.txt"logData = sc.textFile(logFile).cache()numAs = logData.filter(lambda s: 'a' in s).count()numBs = logData.filter(lambda s: 'b' in s).count()print("Line with a:%i,line with b:%i" % (numAs, numBs))

运行结果如下:

20/03/11 16:15:57 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).
20/03/11 16:15:58 WARN Utils: Service 'SparkUI' could not bind on port 4040. Attempting port 4041.
Line with a:3,line with b:1

这里说一下,同样的工作使用python可以做,spark也可以做,使用spark主要是为了高效的进行分布式计算。
戳pyspark教程
戳spark教程

RDD

RDD代表Resilient Distributed Dataset,它们是在多个节点上运行和操作以在集群上进行并行处理的元素,RDD是spark计算的操作对象。
一般,我们先使用数据创建RDD,然后对RDD进行操作。
对RDD操作有两种方法:
Transformation(转换) - 这些操作应用于RDD以创建新的RDD。例如filter,groupBy和map。
Action(操作) - 这些是应用于RDD的操作,它指示Spark执行计算并将结果发送回驱动程序,例如count,collect等。

创建RDD

parallelize是从列表创建RDD,先看一个例子:

from pyspark import SparkContextsc = SparkContext("local", "count app")Words = sc.parallelize(    ["Scala",     "java",     "hadoop",     "spark",     "akka",     "spark vs hadoop",     "pyspark",     "pyspark and spark"     ])print(words)

结果中我们得到一个对象,就是我们列表数据的RDD对象,spark之后可以对他进行操作。

ParallelCollectionRDD[0] at parallelize at PythonRDD.scala:195

Count

count方法返回RDD中的元素个数。

from pyspark import SparkContextsc = SparkContext("local", "count app")words = sc.parallelize(    ["scala",     "java",     "hadoop",     "spark",     "akka",     "spark vs hadoop",     "pyspark",     "pyspark and spark"     ])print(words)counts = words.count()print("Number of elements in RDD -> %i" % counts)

返回结果:

Number of elements in RDD -> 8

Collect

collect返回RDD中的所有元素。

from pyspark import SparkContextsc = SparkContext("local", "collect app")words = sc.parallelize(    ["scala",     "java",     "hadoop",     "spark",     "akka",     "spark vs hadoop",     "pyspark",     "pyspark and spark"     ])coll = words.collect()print("Elements in RDD -> %s" % coll)

返回结果:

Elements in RDD -> ['scala', 'java', 'hadoop', 'spark', 'akka', 'spark vs hadoop', 'pyspark', 'pyspark and spark']

foreach

每个元素会使用foreach内的函数进行处理,但是不会返回任何对象。
下面的程序中,我们定义的一个累加器accumulator,用于储存在foreach执行过程中的值。

from pyspark import SparkContextsc = SparkContext("local", "ForEach app")accum = sc.accumulator(0)data = [1, 2, 3, 4, 5]rdd = sc.parallelize(data)def increment_counter(x):    print(x)    accum.add(x) return 0s = rdd.foreach(increment_counter)print(s)  # Noneprint("Counter value: ", accum)

返回结果:

None
Counter value:  15

filter

返回一个包含元素的新RDD,满足过滤器的条件。

from pyspark import SparkContextsc = SparkContext("local", "Filter app")words = sc.parallelize(    ["scala",     "java",     "hadoop",     "spark",     "akka",     "spark vs hadoop",     "pyspark",     "pyspark and spark"])words_filter = words.filter(lambda x: 'spark' in x)filtered = words_filter.collect()print("Fitered RDD -> %s" % (filtered)) Fitered RDD -> ['spark', 'spark vs hadoop', 'pyspark', 'pyspark and spark']

也可以改写成这样:

from pyspark import SparkContextsc = SparkContext("local", "Filter app")words = sc.parallelize(    ["scala",     "java",     "hadoop",     "spark",     "akka",     "spark vs hadoop",     "pyspark",     "pyspark and spark"])def g(x):    for i in x:        if "spark" in x:            return iwords_filter = words.filter(g)filtered = words_filter.collect()print("Fitered RDD -> %s" % (filtered))

map

将函数应用于RDD中的每个元素并返回新的RDD。

from pyspark import SparkContextsc = SparkContext("local", "Map app")words = sc.parallelize(    ["scala",     "java",     "hadoop",     "spark",     "akka",     "spark vs hadoop",     "pyspark",     "pyspark and spark"])words_map = words.map(lambda x: (x, 1, "_{}".format(x)))mapping = words_map.collect()print("Key value pair -> %s" % (mapping))

返回结果:

Key value pair -> [('scala', 1, '_scala'), ('java', 1, '_java'), ('hadoop', 1, '_hadoop'), ('spark', 1, '_spark'), ('akka', 1, '_akka'), ('spark vs hadoop', 1, '_spark vs hadoop'), ('pyspark', 1, '_pyspark'), ('pyspark and spark', 1, '_pyspark and spark')]

Reduce

执行指定的可交换和关联二元操作后,然后返回RDD中的元素。

from pyspark import SparkContextfrom operator import addsc = SparkContext("local", "Reduce app")nums = sc.parallelize([1, 2, 3, 4, 5])adding = nums.reduce(add)print("Adding all the elements -> %i" % (adding))

 这里的add是python内置的函数,可以使用ide查看:

def add(a, b):    "Same as a + b."    return a + b

reduce会依次对元素相加,相加后的结果加上其他元素,最后返回结果(RDD中的元素)。

Adding all the elements -> 15

Join

返回RDD,包含两者同时匹配的键,键包含对应的所有元素。

from pyspark import SparkContextsc = SparkContext("local", "Join app")x = sc.parallelize([("spark", 1), ("hadoop", 4), ("python", 4)])y = sc.parallelize([("spark", 2), ("hadoop", 5)])print("x =>", x.collect())print("y =>", y.collect())joined = x.join(y)final = joined.collect()print( "Join RDD -> %s" % (final))

返回结果:

x => [('spark', 1), ('hadoop', 4), ('python', 4)]
y => [('spark', 2), ('hadoop', 5)]
Join RDD -> [('hadoop', (4, 5)), ('spark', (1, 2))]

看完上述内容,你们掌握如何在windowns中配置PySpark环境的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网精选频道,感谢各位的阅读!

--结束END--

本文标题: 如何在windowns中配置PySpark环境

本文链接: https://lsjlt.com/news/277012.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 如何在windowns中配置PySpark环境
    如何在windowns中配置PySpark环境?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。首先需要下载hadoop和spark,解压,然后设置环境变量。hadoop清华源下载...
    99+
    2023-06-15
  • windowns使用PySpark环境配置和基本操作
    下载依赖 首先需要下载hadoop和spark,解压,然后设置环境变量。 hadoop清华源下载 spark清华源下载 HADOOP_HOME => /path/hado...
    99+
    2024-04-02
  • 在VScode中如何配置ROS环境
    本篇内容主要讲解“在VScode中如何配置ROS环境”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在VScode中如何配置ROS环境”吧!准备工作首先在VScode中安装ROS和catkin_t...
    99+
    2023-07-02
  • 如何在Nest.js中配置环境变量
    这篇文章主要介绍了如何在Nest.js中配置环境变量,此处给大家介绍的非常详细,对大家的学习或工作具有一定的参考价值,需要的朋友可以参考下:环境变量配置简述程序在不同的环境下需要不同的环境变量,例如生产环境、测试环境以及开发环境所需要不同的...
    99+
    2023-06-06
  • 在Linux中如何配置QT环境变量
    这篇文章主要为大家展示了“在Linux中如何配置QT环境变量”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“在Linux中如何配置QT环境变量”这篇文章吧。Qt是一个跨平台的C++图形界面应用程序...
    99+
    2023-06-27
  • 如何在Linux中配置JDK环境变量
    如何在Linux中配置JDK环境变量 目录 如何在Linux中配置JDK环境变量 一、下载JDK 二、配置环境变量 三、刷新配置 一、下载JDK Java Downloads | Oracle  得到安装包 上传至服务器   解压 ...
    99+
    2023-09-01
    java centos 服务器
  • 如何在PyCharm中配置使用Anaconda环境
    1.Anaconda 如未安装Anaconda可至其官网下载,学习使用个人版就可以了。下载地址:Anaconda | Individual Edition 1、打开Anaconda ...
    99+
    2023-05-13
    PyCharm PyCharm配置 Anaconda环境 PyCharm Anaconda
  • jdk1.7如何在myEclipse环境中进行配置
    这期内容当中小编将会给大家带来有关jdk1.7如何在myEclipse环境中进行配置,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。第一步:下载jdk1.7第二步:安装jdk1.7     将下载的压缩包进...
    99+
    2023-05-31
    myeclipse jdk
  • 如何在CentOs环境下配置SMTP
    如何在CentOs环境下配置SMTP,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。  经常在一些应用场景中,需要能够使用SMTP进行邮件的发...
    99+
    2023-06-06
  • linux如何配置中文环境
    linux中配置中文环境的方法:1、打开linux终端;2、在命令行中输入“sudo apt‐get install language‐pack‐zh‐hans”命令安装中文包;3、输入“sudo vim /var/lib/locales/...
    99+
    2024-04-02
  • ubuntu如何配置中文环境
    ubuntu配置中文环境的方法:打开终端命令行,输入以下命令安装中文包。sudo apt‐get install language‐pack‐zh‐hans修改配置文件。sudo vim /var/lib/locales/supported...
    99+
    2024-04-02
  • eclipse中java环境如何配置
    要在Eclipse中配置Java环境,您可以按照以下步骤进行操作:1. 下载并安装JDK(Java Development Kit)...
    99+
    2023-09-08
    eclipse java
  • UBUNTU中如何配置LAMP环境
    这篇文章主要介绍“UBUNTU中如何配置LAMP环境”,在日常操作中,相信很多人在UBUNTU中如何配置LAMP环境问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”UBUNTU中如何配置LAMP环境”的疑惑有所...
    99+
    2023-07-04
  • IDEA中如何配置Node环境
    这篇文章主要介绍了IDEA中如何配置Node环境的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇IDEA中如何配置Node环境文章都会有所收获,下面我们一起来看看吧。一、下载Node.js官网下载链接:Node....
    99+
    2023-07-05
  • 如何在 VS code中配置一个C++ 环境
    本篇文章给大家分享的是有关如何在 VS code中配置一个C++ 环境,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、VS code 前言VS code作为一款当下非常受欢迎...
    99+
    2023-06-06
  • 如何配置java环境
    右键我的电脑--属性,点击高级系统设置---环境变量。在系统变量中,新建一个名为”JAVA_HOME“的系统变量,变量值为jdk的安装路径,例如我的安装在C:Program FilesJavajdk1.7.0_80找到系统变量Path,在原...
    99+
    2014-10-24
    java基础 配置 java 环境
  • LNMP环境如何配置
    这篇文章主要介绍了LNMP环境如何配置的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇LNMP环境如何配置文章都会有所收获,下面我们一起来看看吧。 LNMP环境配置 概念 ...
    99+
    2024-04-02
  • 如何配置nodejs环境
    这篇文章主要介绍如何配置nodejs环境,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、由于node有多种版本号,每个版本号的API肯定也有些细微的差别,在工作中有可能要经常切换n...
    99+
    2024-04-02
  • Flex1.5环境如何配置
    这篇文章主要为大家展示了“Flex1.5环境如何配置”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Flex1.5环境如何配置”这篇文章吧。Flex1.5环境配置虽然价格高,但无可否认!它是目前同...
    99+
    2023-06-17
  • 如何配置php环境
    如何配置php环境?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一.nginx实现php动态解析原理nginx 是一个高性能的http服务器和反向代理服务器。即...
    99+
    2023-06-15
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作