windows - 无法在 Jupyter Notebook 上使用 Pyspark 完成简单的工作(操作系统:Windows 10,在本地运行代码 - 单节点)
问题描述
数据来源:- https://www.kaggle.com/saurav9786/amazon-product-reviews 总行数:~ 7M (311 MBs)
我正在尝试在 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 *
我使用以下代码将数据集读取为火花数据框:
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()
或者
spark_ratings.show(10)
并且该作业将永远运行,不会引发错误,但不会提供结果。
我是使用 Pyspark 的初学者,我在这里遗漏了一些关键的东西吗?
我有一个 12 GB RAM 和 Intel i5 系统。
解决方案
你等了多长时间?实际上,spark 是延迟评估的,并且在对其应用操作之前不会处理您的数据。因此,在 672 毫秒内读取数据只是添加到 DAG 中,但是一旦您应用操作 show(),它实际上会读取内存中的完整数据并为您提供输出。
因此,这可能需要一些时间,具体取决于您的数据大小。
推荐阅读
- r - 如何运行回归,其中每个处理批次具有不同的匹配对照批次?
- amazon-s3 - 如何在加载 S3 时自动推断 CSV 文件的架构?
- javascript - react setState Hook 并不总是更新对象
- amazon-web-services - 带有 Terraform 的 AWS Glue 管道
- javascript - 无法读取未定义的 vuejs 组件的属性“stripeTokenHandler”
- javascript - 在 AngularJS 的父组件和子组件中获取相同数据的最有效方法?
- java - 从垂直数组中获取单个列表并水平存储它们
- arduino - 使用 Arduino 进行 3.7V 锂电池电量检查
- command-line-interface - 从 CLI 运行简单的 Open Policy Agent Playground 示例
- reactjs - 与打字稿反应,按钮功能不起作用