Apache spark 有没有一种更系统的方法来解决AWS胶水的问题+;Pypark执行阶段?
我有一个代码片段,我在本地以独立模式运行,仅使用100条记录:Apache spark 有没有一种更系统的方法来解决AWS胶水的问题+;Pypark执行阶段?,apache-spark,pyspark,aws-glue,aws-glue-spark,spark-ui,Apache Spark,Pyspark,Aws Glue,Aws Glue Spark,Spark Ui,我有一个代码片段,我在本地以独立模式运行,仅使用100条记录: from awsglue.context import GlueContext glue_context = GlueContext(sc) glue_df = glue_context.create_dynamic_frame.from_catalog(database=db, table_name=table) df = glue_df.toDF() print(df.count()) 架构包含89列,所有列都具有string
from awsglue.context import GlueContext
glue_context = GlueContext(sc)
glue_df = glue_context.create_dynamic_frame.from_catalog(database=db, table_name=table)
df = glue_df.toDF()
print(df.count())
架构包含89列,所有列都具有string数据类型,只有5列具有struct数据类型数组。数据大小为3.1 MB
此外,以下是有关用于运行代码的环境的一些信息:
- spark.executor.cores:2个
- spark.executor.id:驱动程序
- spark.driver.memory:1000M
我的问题是,是否有更系统的方法来理解这些任务的含义。作为一个初学者,我非常依赖Spark UI,但它并没有提供太多关于它执行的任务的信息。我能够找到哪个任务花费的时间最多,但我不知道为什么会这样,也不知道如何系统地解决它。spark代码中的运行时间是根据群集启动时间、DAG调度程序优化时间、运行阶段时间计算的。在您的情况下,问题可能是因为以下原因:
- 拼花地板文件的数量。要测试这一点,请轻松阅读表格并将其作为一个拼花文件写回。您正在调用一个表,但在幕后,它正在读取物理实木拼合文件,因此文件的数量是一个要考虑的项目。
- 火花团的数量。集群的数量应该是您拥有的计算资源的相关数量。例如,在您的例子中,您有两个核心和一个小尺寸的表。因此,只有几个分区比默认分区号200更有效。
explain
函数并读取DAG结果。通过此功能,您可以查看并比较内部优化程序流程计算的分析的逻辑计划
,优化的逻辑计划
,以及物理计划
。要查找
explain
功能的更详细说明,请访问此您的第一个建议修复程序非常有效。执行时间从12分钟缩短到了几秒钟。我已将拼花地板文件合并为一个文件,以便更快地进行本地测试。另外,感谢您启动解释功能。我会试试这个。