in storage-handlers/hbase/src/java/org/apache/hcatalog/hbase/HBaseHCatStorageHandler.java [567:608]
private String getScanColumns(HCatTableInfo tableInfo, String outputColSchema) throws IOException {
StringBuilder builder = new StringBuilder();
String hbaseColumnMapping = tableInfo.getStorerInfo().getProperties()
.getProperty(HBaseSerDe.HBASE_COLUMNS_MAPPING);
if (outputColSchema == null) {
String[] splits = hbaseColumnMapping.split("[,]");
for (int i = 0; i < splits.length; i++) {
if (!splits[i].equals(HBaseSerDe.HBASE_KEY_COL))
builder.append(splits[i]).append(" ");
}
} else {
HCatSchema outputSchema = (HCatSchema) HCatUtil.deserialize(outputColSchema);
HCatSchema tableSchema = tableInfo.getDataColumns();
List<String> outputFieldNames = outputSchema.getFieldNames();
List<Integer> outputColumnMapping = new ArrayList<Integer>();
for (String fieldName : outputFieldNames) {
int position = tableSchema.getPosition(fieldName);
outputColumnMapping.add(position);
}
List<String> columnFamilies = new ArrayList<String>();
List<String> columnQualifiers = new ArrayList<String>();
HBaseUtil.parseColumnMapping(hbaseColumnMapping, columnFamilies, null,
columnQualifiers, null);
for (int i = 0; i < outputColumnMapping.size(); i++) {
int cfIndex = outputColumnMapping.get(i);
String cf = columnFamilies.get(cfIndex);
// We skip the key column.
if (cf.equals(HBaseSerDe.HBASE_KEY_COL) == false) {
String qualifier = columnQualifiers.get(i);
builder.append(cf);
builder.append(":");
if (qualifier != null) {
builder.append(qualifier);
}
builder.append(" ");
}
}
}
//Remove the extra space delimiter
builder.deleteCharAt(builder.length() - 1);
return builder.toString();
}