首页 文章

从spark中的hdfs读取orc / parquet文件

提问于
浏览
-1

我怀疑从hdfs加载数据到spark集群(独立模式)时说是plat或orc文件,它是否只是在第一个实例读取元数据或整个数据 . 如果我应用过滤器是否会加载整个数据并对其应用过滤器,或者它只读取所选列以及是否将整个数据复制到spark(如果存在的话)...

提前致谢..

2 回答

  • 0

    不确定过滤的确切含义,但一般来说,当访问柱状结构文件(如Parquet或ORC)时,如果选择特定列,则只能将它们读取到内存而不是其他列 .

    特别是如果你要求像ds.filter(“...”)之类的东西,只能读取内存中回答过滤器的数据的能力叫做“Predicate pushdown” . 一般来说它可以在Spark中使用,但取决于你想要做什么 . 例如AFAIA,Spark无法对Parquet文件中的复杂类型列进行谓词下推 .

    所以我建议如果可能只选择相关列然后过滤 . 如果您使用复杂类型或在Google上激活SQL检查,则支持谓词下推 .

    此外,无论文件是在HDFS上还是在其他地方如S3,行为应该是相同的

  • 0

    如果我应用过滤器是否会加载整个数据并对其应用过滤器或它只读取..

    过滤器转换完成后,Spark不会将数据加载到内存中,它不会从文件中加载数据,直到完成任何 action . 这是因为懒惰的评价 .

相关问题