数据源:-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系统。
您等待结果多长时间了?实际上,spark是懒惰地评估的,除非对其执行操作,否则不会处理您的数据。因此,在672毫秒内读取数据就是将其添加到DAG中,但是只要您应用action show(),它就会实际上读取内存中的完整数据并提供输出。
因此,可能需要一些时间,具体取决于您的数据大小。