给定一个未类型化的Dataset
,Spark如何存储包含实际数据的Row
?
我的直觉是它是一个Map
,但我找不到任何代码引用。
root
|-- firstname: string (nullable = true)
|-- lastname: string (nullable = true)
|-- age: integer (nullable = true)
我问这个问题是因为我们有一个动态的数据集处理,我试图根据输入数据估计所需的内存。
给定一个未类型化的Dataset
,Spark如何存储包含实际数据的Row
?
我的直觉是它是一个Map
,但我找不到任何代码引用。
root
|-- firstname: string (nullable = true)
|-- lastname: string (nullable = true)
|-- age: integer (nullable = true)
我问这个问题是因为我们有一个动态的数据集处理,我试图根据输入数据估计所需的内存。
2条答案
按热度按时间flvlnr441#
有太多的变量(交换,执行计划中的多个步骤,spark自动优化,缓存......)来估计您正在考虑的估计方式。
看看Spark UI。请参阅阶段详细信息,其中有一些与内存使用相关的统计信息,包括“Peak execution memory”。
您还可以获得非常详细和细粒度的指标。您可以将其发送到您自己的监控工具,如Datadog/Loki/...并进行更多的分析以获得更具体的想法。
a0zr77ik2#
DataFrame只是Dataset[Row]的类型别名。
有关内存管理和存储here的更多详细信息,可以查看官方文档