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

问题描述 投票:0回答:1

数据源:-https://www.kaggle.com/saurav9786/amazon-product-reviews总行数:〜7M(311 MB)

我正在尝试在Jupyter Notebook上使用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 *

我使用以下代码将数据集读取为Spark数据框:

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()

OR

spark_ratings.show(10)

并且该作业将永远运行,不会引发错误,但不会提供结果。

我是使用Pyspark的初学者,我在这里错过了一些重要的东西吗?

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

windows pyspark jupyter
1个回答
0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.