private List<HCatPartition> getFilteredPartitions( String tableName, String timeZone, String dateMask, Pair<Date, Date> range) throws HCatException { DateFormat dateFormat = new SimpleDateFormat(dateMask); dateFormat.setTimeZone(TimeZone.getTimeZone(timeZone)); String filter = "ds < '" + dateFormat.format(range.first) + "'"; return client.listPartitionsByFilter(DATABASE_NAME, tableName, filter); }
private List<HCatPartition> getMultiColDatedFilteredPartitions( String tableName, String timeZone, Pair<Date, Date> range) throws HCatException { DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); dateFormat.setTimeZone(TimeZone.getTimeZone(timeZone)); Calendar calendar = Calendar.getInstance(); calendar.setTime(range.first); String[] dateCols = dateFormat.format(calendar.getTime()).split("-"); // filter eg: "(year < '2014') or (year = '2014' and month < '02') or // (year = '2014' and month = '02' and day < '24')" String filter1 = "(year < '" + dateCols[0] + "')"; String filter2 = "(year = '" + dateCols[0] + "' and month < '" + dateCols[1] + "')"; String filter3 = "(year = '" + dateCols[0] + "' and month = '" + dateCols[1] + "' and day < '" + dateCols[2] + "')"; String filter = filter1 + " or " + filter2 + " or " + filter3; return client.listPartitionsByFilter(DATABASE_NAME, tableName, filter); }