use*_*916 6 hive apache-spark apache-spark-sql pyspark
我在 Jupyter 笔记本中使用 PySpark。以下步骤最多需要 100 秒,这是可以的。
toydf = df.select("column_A").limit(20)
Run Code Online (Sandbox Code Playgroud)
但是,接下来的show()步骤需要 2-3 分钟。它只有 20 行整数列表,每个列表不超过 60 个元素。为什么需要这么长时间?
toydf.show()
Run Code Online (Sandbox Code Playgroud)
df 生成如下:
spark = SparkSession.builder\
.config(conf=conf)\
.enableHiveSupport()\
.getOrCreate()
df = spark.sql("""SELECT column_A
FROM datascience.email_aac1_pid_enl_pid_1702""")
Run Code Online (Sandbox Code Playgroud)
Spark中有两个主要概念:
1:转换:每当您应用 withColumn、drop、joins 或 groupBy 时,它们实际上是在评估,它们只是生成一个新的数据帧或 RDD。
2:动作:在诸如计数、显示、显示等动作的情况下,编写它实际上完成所有转换工作。所有这些操作都在内部调用 Spark RunJob API 将所有转换作为作业运行。
在你的情况下,当你击中时toydf = df.select("column_A").limit(20)什么也没有发生。
但是,当您使用Show()作为操作的方法时,它会将数据从集群收集到您的驱动程序节点,此时它实际上评估您的toydf = df.select("column_A").limit(20).
| 归档时间: |
|
| 查看次数: |
4184 次 |
| 最近记录: |