无法使用Jupyter笔记本上的Pyspark完成简单作业(操作系统:Windows 10,在本地运行代码-单节点)

无法使用Jupyter笔记本上的Pyspark完成简单作业(操作系统:Windows 10,在本地运行代码-单节点),windows,pyspark,jupyter,Windows,Pyspark,Jupyter,数据来源:- 总行数:~7M(311 MBs) 我试图在Jupyter笔记本上使用Pyspark。我能够成功地设置Sparksession,测试它,并将上面的评论数据(本地存储)作为spark数据帧直接读取。然而,我甚至无法成功完成最简单的数据操作作业,例如简单地计算不同的用户ID,或者甚至无法显示前10行。这项工作没完没了地进行着 我已使用以下代码设置并配置了sparksession: import findspark findspark.init() from pyspark import

数据来源:- 总行数:~7M(311 MBs)

我试图在Jupyter笔记本上使用Pyspark。我能够成功地设置Sparksession,测试它,并将上面的评论数据(本地存储)作为spark数据帧直接读取。然而,我甚至无法成功完成最简单的数据操作作业,例如简单地计算不同的用户ID,或者甚至无法显示前10行。这项工作没完没了地进行着

我已使用以下代码设置并配置了sparksession:

import findspark
findspark.init()

from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession
conf = pyspark.SparkConf().setAppName('appName').setMaster('local[*]')
sc = pyspark.SparkContext(conf=conf)
spark = SparkSession(sc)

import pyspark.sql.functions as F
from pyspark.sql.types import *
d_schema = StructType().add("userid","string").add("productid","string").add("rating","integer").add("datetime","string")
spark_ratings = spark.read.csv("source_data.csv",schema=d_schema,header=None)
我使用以下代码将数据集读取为spark数据帧:

import findspark
findspark.init()

from pyspark import SparkContext, SparkConf
from pyspark.sql import SparkSession
conf = pyspark.SparkConf().setAppName('appName').setMaster('local[*]')
sc = pyspark.SparkContext(conf=conf)
spark = SparkSession(sc)

import pyspark.sql.functions as F
from pyspark.sql.types import *
d_schema = StructType().add("userid","string").add("productid","string").add("rating","integer").add("datetime","string")
spark_ratings = spark.read.csv("source_data.csv",schema=d_schema,header=None)
以672毫秒读取数据

但在此之后,我尝试了以下方法:

spark_ratings.select(F.countDistinct("userid")).show()

作业会永远运行,不会抛出错误,但不会交付结果

我是Pyspark的初学者,我是否遗漏了一些关键的东西


我有一个12 GB的RAM和Intel i5系统

你等结果等了多久? 实际上,spark是惰性地进行评估的,并且在应用操作之前不会处理数据。因此,在672毫秒内读取数据只是将其添加到DAG中,但只要应用action show(),它就会实际读取内存中的完整数据并提供输出


因此,这可能需要一些时间,具体取决于您的数据大小。

您等待结果的时间有多长? 实际上,spark是惰性地进行评估的,并且在应用操作之前不会处理数据。因此,在672毫秒内读取数据只是将其添加到DAG中,但只要应用action show(),它就会实际读取内存中的完整数据并提供输出


因此,这可能需要一些时间,具体取决于您的数据大小。

谢谢您的回复,Shubham,我等了10多分钟。在那之后,我认为可能有什么不对劲,所以辞掉了这份工作。我的数据大小是311 MB,这不仅仅意味着要终止作业…让它继续运行…spark作业开始时速度很慢,但在需要进行多次转换时会提高性能…让它自己失败,然后等待。。。我想说谢谢Shubham,这确实有效。最初的几次询问花了很长时间,然后开始顺利进行。我做了,但它说我的投票将被记录下来,但不会公开显示,因为我感谢你的回答。Shubham,我等了10多分钟。在那之后,我认为可能有什么不对劲,所以辞掉了这份工作。我的数据大小是311 MB,这不仅仅意味着要终止作业…让它继续运行…spark作业开始时速度很慢,但在需要进行多次转换时会提高性能…让它自己失败,然后等待。。。我想说谢谢Shubham,这确实有效。最初的几次询问花了很长时间,之后开始顺利进行。我做了,但它说我的投票会被记录下来,但不会公开显示,因为我已经做了