【发布时间】:2017-12-14 19:10:12
【问题描述】:
我在 Jupyter 笔记本中使用 PySpark。以下步骤最多需要 100 秒,没关系。
toydf = df.select("column_A").limit(20)
但是,以下show() 步骤需要 2-3 分钟。它只有 20 行整数列表,每个列表的元素不超过 60 个。为什么需要这么长时间?
toydf.show()
df生成如下:
spark = SparkSession.builder\
.config(conf=conf)\
.enableHiveSupport()\
.getOrCreate()
df = spark.sql("""SELECT column_A
FROM datascience.email_aac1_pid_enl_pid_1702""")
【问题讨论】:
-
df是如何生成的?show()是这里唯一真正读取任何数据的方法... 注意:大多数应用程序要么受 CPU 限制,要么受网络限制,但只有在数据被在记忆中 -
@cricket_007 已更新。我认为 df = spark.sql(. . .) 可能会将数据加载/流式传输到内存中?
-
不。它只是加载元数据(据我所知)
-
这很奇怪。我会说这可能是网络瓶颈,因为它需要从您的执行程序加载数据。解决该问题的一种肮脏解决方案是缓存 toydf。所以第一个节目会很慢,但之后应该加载到内存中。
标签: apache-spark hive pyspark apache-spark-sql