在使用spark时,有时会在配置单元表中遇到一个大文件,有时会尝试处理配置单元表中许多较小的文件。
我知道在调优spark作业时,它的工作方式取决于文件是否可拆分。在cloudera的这个页面中,它说我们应该知道文件是否可拆分:
…例如,如果您的数据以几个大的不可散播文件的形式到达。。。
如何知道文件是否可拆分?
如果文件可拆分,如何知道要使用的分区数?
如果我试图编写一段代码来处理任何一个配置单元表(即上面描述的两种情况中的任何一种),那么在更多分区方面出错是否更好?
在使用spark时,有时会在配置单元表中遇到一个大文件,有时会尝试处理配置单元表中许多较小的文件。
我知道在调优spark作业时,它的工作方式取决于文件是否可拆分。在cloudera的这个页面中,它说我们应该知道文件是否可拆分:
…例如,如果您的数据以几个大的不可散播文件的形式到达。。。
如何知道文件是否可拆分?
如果文件可拆分,如何知道要使用的分区数?
如果我试图编写一段代码来处理任何一个配置单元表(即上面描述的两种情况中的任何一种),那么在更多分区方面出错是否更好?
1条答案
按热度按时间6pp0gazn1#
考虑到spark接受hadoop输入文件,请看下图。
仅限
bzip2
格式化文件是可拆分的,其他格式如zlib, gzip, LZO, LZ4 and Snappy
格式不可拆分。关于对分区的查询,分区不依赖于要使用的文件格式。它取决于文件中的内容-如日期等分区列的值。
编辑1:看看这个se问题和spark阅读zip文件的工作代码。
编辑2:
lzo文件可以拆分。
只要分割发生在块边界上,lzo文件就可以被分割
有关详细信息,请参阅本文。