【问题标题】:Spark 1.6 and compute statsSpark 1.6 和计算统计
【发布时间】:2019-08-10 19:33:37
【问题描述】:

使用 spark1.6 中表的底层 parquet 文件时,计算统计信息是否仍然有帮助?例如:

 hiveCtx.read.format("parquet")
        .load("/path/*.parquet").registerTempTable("TEST") 

【问题讨论】:

    标签: apache-spark hive impala


    【解决方案1】:

    视情况而定

    • 您的表是否已分区,如果已分区,那么您是在读取一个分区还是所有分区。
    • 如果您的表已分区,则始终建议从表中读取数据,因为 Hive OR Impala 维护元数据,并在 Spark 中创建包含相关数据的数据帧,当您在 Spark DF 上应用某些转换时,您的代码性能会更好。
    • 我可以看到您正在使用 hiveContext 来读取您的 parquet 文件,在性能方面它只会有很小的偏差,但总体上没有太大区别。

    【讨论】:

    • 感谢您的快速操作,是的,表已分区并从已注册的 TEMP 表中一次读取一个分区。这种方式分区修剪工作正常。但仍然不确定基础统计数据是否有帮助..
    • 这绝对不是一个更好的开始方法,如果表是分区的,那么总是从任何分区读取表而不是单独的文件。您可以在创建 df 时使用惰性 val,这将有助于在需要时而不是立即计算。
    • 同意,如果由于批处理中的 n 个作业部分和批处理完成跨越指定时间线而在没有统计信息(花费大量时间)的情况下运行良好,则希望避免计算统计信息。
    猜你喜欢
    • 1970-01-01
    • 2018-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-25
    相关资源
    最近更新 更多