【问题标题】:Filter Partition Before Reading Hive table (Spark)在读取 Hive 表之前过滤分区(Spark)
【发布时间】:2018-02-23 15:56:37
【问题描述】:

目前我正在尝试按最新的 date_processed 过滤 Hive 表。

表被分区。

系统 处理日期 地区

我设法过滤它的唯一方法是执行连接查询:

query = "select * from contracts_table as a join (select (max(date_processed) as maximum from contract_table as b) on a.date_processed = b.maximum"

这种方式非常耗时,因为我必须对 25 个表执行相同的过程。

任何人都知道在 Spark

这是我用来阅读的方法。

public static DataFrame loadAndFilter (String query)
{
        return SparkContextSingleton.getHiveContext().sql(+query);
}

非常感谢!

【问题讨论】:

    标签: apache-spark hive hdfs


    【解决方案1】:

    具有所有表分区的数据帧可以通过以下方式接收:

    val partitionsDF = hiveContext.sql("show partitions TABLE_NAME")
    

    可以解析数值,获取最大值。

    【讨论】:

    • 我认为这可以工作并提高性能,但实际上并不能完全解决问题,因为您需要加载 20 个新数据帧,计算最大值,然后过滤其他表......不管怎样,我试试看,看看性能如何。谢谢!
    猜你喜欢
    • 2020-02-06
    • 2019-10-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-06
    相关资源
    最近更新 更多