Apache spark “期间发生了什么?”;“停机时间”;Spark何时读取S3上的大数据集?
我在AWS S3中有一堆JSON数据——比如说100k个文件,每个大约5MB——我使用Spark 2.2的Apache spark “期间发生了什么?”;“停机时间”;Spark何时读取S3上的大数据集?,apache-spark,Apache Spark,我在AWS S3中有一堆JSON数据——比如说100k个文件,每个大约5MB——我使用Spark 2.2的DataFrameReader通过以下方式读取和处理它们: sparkSession.read.json(…) 我发现Spark会在开始计算前挂起5分钟左右。对于较大的数据集,这可能需要数小时。当我说“挂起”时,我的意思是终端可视化显示集群正在工作的阶段以及它的运行距离没有出现——据我所知,它不知何故处于两个阶段之间 Spark在这段时间做了什么,我如何帮助它更快 我有两个想法,但似乎都错了
DataFrameReader
通过以下方式读取和处理它们:
sparkSession.read.json(…)
我发现Spark会在开始计算前挂起5分钟左右。对于较大的数据集,这可能需要数小时。当我说“挂起”时,我的意思是终端可视化显示集群正在工作的阶段以及它的运行距离没有出现——据我所知,它不知何故处于两个阶段之间
Spark在这段时间做了什么,我如何帮助它更快
我有两个想法,但似乎都错了
我的第一个想法是Spark正在尝试列出进行计算所需的所有文件。我通过实际脱机创建一个文件列表并直接将其提供给Spark而不是使用glob语法来测试这一点:
val fileList=loadFiles()
sparkSession.read.json(文件列表:*)
这实际上导致了“绞刑”时间的延长
我的第二个想法是Spark利用这段时间为所有数据创建一个模式。但我通过手动指定模式排除了这一点:
val schema=createSchema()
sparksession.read.schema(schema).json(…)
这里的“挂起”时间和以前一样,尽管计算速度要快得多
所以我不确定到底发生了什么,也不知道如何诊断。还有人遇到过这种情况吗?在S3中列出目录树的成本非常高,“分区”。这就是你正在经历的 修复
- 更少、更大的文件
- 浅目录树