+ "(key string, testqualifier1 string, testqualifier2 string) STORED BY " +
"'org.apache.hcatalog.hbase.HBaseHCatStorageHandler'"
+ "TBLPROPERTIES ('hbase.columns.mapping'=':key," +
"testFamily:testQualifier1,testFamily:testQualifier2')";
CommandProcessorResponse responseTwo = hcatDriver.run(tableQuery);
assertEquals(0, responseTwo.getResponseCode());
HBaseAdmin hAdmin = new HBaseAdmin(getHbaseConf());
boolean doesTableExist = hAdmin.tableExists(tableName);
assertTrue(doesTableExist);
populateHBaseTable(tableName, 5);
Configuration conf = new Configuration(hcatConf);
conf.set(HCatConstants.HCAT_KEY_HIVE_CONF,
HCatUtil.serialize(getHiveConf().getAllProperties()));
// output settings
Path outputDir = new Path(getTestDir(), "mapred/testHBaseTableProjectionReadMR");
FileSystem fs = getFileSystem();
if (fs.exists(outputDir)) {
fs.delete(outputDir, true);
}
// create job
JobConf job = new JobConf(conf);
job.setJobName("hbase-scan-column");
job.setJarByClass(this.getClass());
job.setMapperClass(MapReadProjectionHTable.class);
job.setInputFormat(HBaseInputFormat.class);
//Configure projection schema
job.set(HCatConstants.HCAT_KEY_OUTPUT_SCHEMA, HCatUtil.serialize(getProjectionSchema()));
Job newJob = new Job(job);
HCatInputFormat.setInput(newJob, MetaStoreUtils.DEFAULT_DATABASE_NAME, tableName);
String inputJobString = newJob.getConfiguration().get(HCatConstants.HCAT_KEY_JOB_INFO);
InputJobInfo info = (InputJobInfo) HCatUtil.deserialize(inputJobString);
job.set(HCatConstants.HCAT_KEY_JOB_INFO, inputJobString);
for (PartInfo partinfo : info.getPartitions()) {
for (Entry<String, String> entry : partinfo.getJobProperties().entrySet())
job.set(entry.getKey(), entry.getValue());
}
assertEquals("testFamily:testQualifier1", job.get(TableInputFormat.SCAN_COLUMNS));
job.setOutputFormat(org.apache.hadoop.mapred.TextOutputFormat.class);
org.apache.hadoop.mapred.TextOutputFormat.setOutputPath(job, outputDir);
job.setMapOutputKeyClass(BytesWritable.class);
job.setMapOutputValueClass(Text.class);
job.setOutputKeyClass(BytesWritable.class);
job.setOutputValueClass(Text.class);
job.setNumReduceTasks(0);
RunningJob runJob = JobClient.runJob(job);
runJob.waitForCompletion();
assertTrue(runJob.isSuccessful());
assertFalse(MapReadProjHTable.error);
assertEquals(MapReadProjHTable.count, 1);
String dropTableQuery = "DROP TABLE " + tableName;
CommandProcessorResponse responseThree = hcatDriver.run(dropTableQuery);
assertEquals(0, responseThree.getResponseCode());
boolean isHbaseTableThere = hAdmin.tableExists(tableName);
assertFalse(isHbaseTableThere);
}