/** * Creates a pair. Constructor doesn't infer template args but * the method does, so the code becomes less ugly. */ public static <T1, T2> ObjectPair<T1, T2> create(T1 f, T2 s) { return new ObjectPair<>(f, s); }
private ObjectPair<Query, Map<String, String>> getPartQueryWithParams( String catName, String dbName, String tblName, List<String> partNames) { Query query = pm.newQuery(); Map<String, String> params = new HashMap<>(); String filterStr = getJDOFilterStrForPartitionNames(catName, dbName, tblName, partNames, params); query.setFilter(filterStr); LOG.debug(" JDOQL filter is {}", filterStr); query.declareParameters(makeParameterDeclarationString(params)); return new ObjectPair<>(query, params); }
private void dropPartitionsUsingExpressions(Table table, Map<String, String> partitionSpec, boolean ifExists, boolean deleteData) throws SemanticException, TException { LOG.info("HCatClient: Dropping partitions using partition-predicate Expressions."); ExprNodeGenericFuncDesc partitionExpression = new ExpressionBuilder(table, partitionSpec).build(); ObjectPair<Integer, byte[]> serializedPartitionExpression = new ObjectPair<>(partitionSpec.size(), SerializationUtilities.serializeExpressionToKryo(partitionExpression)); hmsClient.dropPartitions(table.getDbName(), table.getTableName(), Arrays.asList(serializedPartitionExpression), deleteData && !isExternal(table), // Delete data? ifExists, // Fail if table doesn't exist? false); // Need results back? }
public List<Partition> dropPartitions(String dbName, String tblName, List<DropTableDesc.PartSpec> partSpecs, PartitionDropOptions dropOptions) throws HiveException { try { Table tbl = getTable(dbName, tblName); List<org.apache.hadoop.hive.metastore.utils.ObjectPair<Integer, byte[]>> partExprs = new ArrayList<>(partSpecs.size()); for (DropTableDesc.PartSpec partSpec : partSpecs) { partExprs.add(new org.apache.hadoop.hive.metastore.utils.ObjectPair<>(partSpec.getPrefixLength(), SerializationUtilities.serializeExpressionToKryo(partSpec.getPartSpec()))); } List<org.apache.hadoop.hive.metastore.api.Partition> tParts = getMSC().dropPartitions( dbName, tblName, partExprs, dropOptions); return convertFromMetastore(tbl, tParts); } catch (NoSuchObjectException e) { throw new HiveException("Partition or table doesn't exist.", e); } catch (Exception e) { throw new HiveException(e.getMessage(), e); } }
private ObjectPair<Query, Object[]> makeQueryByPartitionNames( String catName, String dbName, String tableName, List<String> partNames, Class<?> clazz, String tbCol, String dbCol, String partCol, String catCol) { String queryStr = tbCol + " == t1 && " + dbCol + " == t2 && " + catCol + " == t3"; String paramStr = "java.lang.String t1, java.lang.String t2, java.lang.String t3"; Object[] params = new Object[3 + partNames.size()]; params[0] = normalizeIdentifier(tableName); params[1] = normalizeIdentifier(dbName); params[2] = normalizeIdentifier(catName); int index = 0; for (String partName : partNames) { params[index + 3] = partName; queryStr += ((index == 0) ? " && (" : " || ") + partCol + " == p" + index; paramStr += ", java.lang.String p" + index; ++index; } queryStr += ")"; Query query = pm.newQuery(clazz, queryStr); query.declareParameters(paramStr); return new ObjectPair<>(query, params); }
private ObjectPair<Query, Map<String, String>> getPartQueryWithParams( String catName, String dbName, String tblName, List<String> partNames) { StringBuilder sb = new StringBuilder("table.tableName == t1 && table.database.name == t2 &&" + " table.database.catalogName == t3 && ("); int n = 0; Map<String, String> params = new HashMap<>(); for (Iterator<String> itr = partNames.iterator(); itr.hasNext();) { String pn = "p" + n; n++; String part = itr.next(); params.put(pn, part); sb.append("partitionName == ").append(pn); sb.append(" || "); } sb.setLength(sb.length() - 4); // remove the last " || " sb.append(')'); Query query = pm.newQuery(); query.setFilter(sb.toString()); LOG.debug(" JDOQL filter is {}", sb); params.put("t1", normalizeIdentifier(tblName)); params.put("t2", normalizeIdentifier(dbName)); params.put("t3", normalizeIdentifier(catName)); query.declareParameters(makeParameterDeclarationString(params)); return new ObjectPair<>(query, params); }
private void dropPartitionsUsingExpressions(Table table, Map<String, String> partitionSpec, boolean ifExists, boolean deleteData) throws SemanticException, TException { LOG.info("HCatClient: Dropping partitions using partition-predicate Expressions."); ExprNodeGenericFuncDesc partitionExpression = new ExpressionBuilder(table, partitionSpec).build(); ObjectPair<Integer, byte[]> serializedPartitionExpression = new ObjectPair<>(partitionSpec.size(), SerializationUtilities.serializeExpressionToKryo(partitionExpression)); hmsClient.dropPartitions(table.getDbName(), table.getTableName(), Arrays.asList(serializedPartitionExpression), deleteData && !isExternal(table), // Delete data? ifExists, // Fail if table doesn't exist? false); // Need results back? }
private ObjectPair<Query, Object[]> makeQueryByPartitionNames( String catName, String dbName, String tableName, List<String> partNames, Class<?> clazz, String tbCol, String dbCol, String partCol, String catCol) { String queryStr = tbCol + " == t1 && " + dbCol + " == t2 && " + catCol + " == t3"; String paramStr = "java.lang.String t1, java.lang.String t2, java.lang.String t3"; Object[] params = new Object[3 + partNames.size()]; params[0] = normalizeIdentifier(tableName); params[1] = normalizeIdentifier(dbName); params[2] = normalizeIdentifier(catName); int index = 0; for (String partName : partNames) { params[index + 3] = partName; queryStr += ((index == 0) ? " && (" : " || ") + partCol + " == p" + index; paramStr += ", java.lang.String p" + index; ++index; } queryStr += ")"; Query query = pm.newQuery(clazz, queryStr); query.declareParameters(paramStr); return new ObjectPair<>(query, params); }