Hadoop 可以帮助避免在配置单元分区查询中指定相同信息或列的分区方法?

Hadoop 可以帮助避免在配置单元分区查询中指定相同信息或列的分区方法?,hadoop,hive,bigdata,data-analysis,data-science,Hadoop,Hive,Bigdata,Data Analysis,Data Science,我每天有高达5-10 GB的数据处理。在我看来,按月分区更有意义 以下是一个例子: “我的表”有以下列: 交易日期时间戳-交易日期 交易金额整数-交易金额 DWH_分区字符串—进入按节分区的技术字段 现在我想查询2015年1月15日至2015年11月15日之间的交易金额 我的问题是 select sum(TRANSACTION_AMOUNT) from TEST where TRANSACTION_DATE >= CAST('2015-01-15' as timestamp) AND TR

我每天有高达5-10 GB的数据处理。在我看来,按月分区更有意义

以下是一个例子:

“我的表”有以下列:

交易日期时间戳-交易日期

交易金额整数-交易金额

DWH_分区字符串—进入按节分区的技术字段

现在我想查询2015年1月15日至2015年11月15日之间的交易金额

我的问题是

select sum(TRANSACTION_AMOUNT) from TEST where TRANSACTION_DATE >= CAST('2015-01-15' as timestamp) AND TRANSACTION_DATE < CAST('2015-11-15' as timestamp)
此查询返回正确的数据,但它执行完整表扫描,而我希望它只使用分区2015-01、2015-02。。。。2015-11

为此,我需要手动指定应该使用哪些分区,以便查询如下:

select sum(TRANSACTION_AMOUNT) from TEST where TRANSACTION_DATE >= CAST('2015-01-15' as timestamp) AND TRANSACTION_DATE < CAST('2015-11-15' as timestamp) and DWH_PARTITION in ('2015-01',.........'2015-11');
因为我们不能按时间戳进行分区,所以业务分析师必须知道给定表是否按月份、日期等进行分区的确切分区模式

还请注意,有关日期的信息需要指定两次:一次用于事务日期,另一次用于分区


您知道一些分区方法可以帮助避免两次指定相同的信息,并让用户不必知道他们需要查询的所有表的分区模式吗?

它只能通过范围分区来实现,目前不受支持。也许UDF会有帮助,但100%不确定


我们通过提供简单的web界面解决了这个问题,用户可以在其中选择表、筛选列,而Undercover应用程序足够智能,可以利用分区修剪生成查询。

您知道其他数据库是否有这样的功能,例如,在不键入任何SQL的情况下猜测用户想要什么吗?问问IBM,也许他们的Watson产品可以做到这一点。您并没有费心解释您使用的是什么表格格式。尝试使用Gzip压缩的ORC,它将有助于进行完整扫描,即扫描条带头以检查事务_datemin/max,如果不匹配WHERE子句,则跳过条带。