我有一个 csv 包含大量列的文件。我只想用 spark .我知道我们可以使用select语句来过滤列。但我想要的是 read 操作本身,它应该只加载一列。通过这种方式,我应该能够避免额外的内存被其他列使用。有什么办法吗?
csv
spark
read
8wigbo561#
spark将在内存中加载完整的文件,并在前面提到的select语句的帮助下筛选出所需的列。因为spark中的所有读取操作都会在创建分布式流读取器时读取和扫描整个文件(读取器在存储数据的每个节点上示例化)。如果您的问题是按列读取数据,那么您可以以Parquet格式存储文件并读取该文件。事实上,parquet是柱状存储,它正好适合这种类型的用例(您可以使用explain来验证它)。
mccptt672#
spark将加载完整的文件并解析列。正如您所提到的,您可以使用select来限制dataframe中的列,因此dataframe将只有一列。
2条答案
按热度按时间8wigbo561#
spark将在内存中加载完整的文件,并在前面提到的select语句的帮助下筛选出所需的列。
因为spark中的所有读取操作都会在创建分布式流读取器时读取和扫描整个文件(读取器在存储数据的每个节点上示例化)。
如果您的问题是按列读取数据,那么您可以以Parquet格式存储文件并读取该文件。事实上,parquet是柱状存储,它正好适合这种类型的用例(您可以使用explain来验证它)。
mccptt672#
spark将加载完整的文件并解析列。正如您所提到的,您可以使用select来限制dataframe中的列,因此dataframe将只有一列。