com.lordofthejars.nosqlunit.hbase.DataLoader Maven / Gradle / Ivy
package com.lordofthejars.nosqlunit.hbase;
import java.io.IOException;
import java.util.List;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import com.lordofthejars.nosqlunit.hbase.model.ParsedColumnFamilyModel;
import com.lordofthejars.nosqlunit.hbase.model.ParsedColumnModel;
import com.lordofthejars.nosqlunit.hbase.model.ParsedDataModel;
import com.lordofthejars.nosqlunit.hbase.model.ParsedRowModel;
public class DataLoader {
protected Configuration configuration;
public DataLoader(Configuration configuration) {
this.configuration = configuration;
}
public void load(ParsedDataModel parsedDataModel) throws IOException {
HBaseAdmin hBaseAdmin = new HBaseAdmin(configuration);
byte[] tableName = parsedDataModel.getName().getBytes();
if (!hBaseAdmin.tableExists(tableName)) {
hBaseAdmin.createTable(new HTableDescriptor(tableName));
}
hBaseAdmin.disableTable(tableName);
HTableDescriptor tableDescriptor = hBaseAdmin.getTableDescriptor(tableName);
List columnFamilies = parsedDataModel.getColumnFamilies();
for (ParsedColumnFamilyModel parsedColumnFamilyModel : columnFamilies) {
byte[] familyName = parsedColumnFamilyModel.getName().getBytes();
HColumnDescriptor hColumnDescriptor = new HColumnDescriptor(familyName);
if (existsColumnFamily(tableDescriptor, parsedColumnFamilyModel)) {
hBaseAdmin.modifyColumn(tableName, hColumnDescriptor);
} else {
hBaseAdmin.addColumn(tableName, hColumnDescriptor);
}
}
hBaseAdmin.enableTable(tableName);
HTable table = new HTable(configuration, tableName);
for (ParsedColumnFamilyModel parsedColumnFamilyModel : columnFamilies) {
byte[] familyName = parsedColumnFamilyModel.getName().getBytes();
List rows = parsedColumnFamilyModel.getRows();
for (ParsedRowModel parsedRowModel : rows) {
byte[] key = parsedRowModel.getKeyInBytes();
List columns = parsedRowModel.getColumns();
Put column = new Put(key);
for (ParsedColumnModel parsedColumnModel : columns) {
byte[] columnName = parsedColumnModel.getName().getBytes();
byte[] columnValuee = parsedColumnModel.getValueInBytes();
column.add(familyName, columnName, columnValuee);
}
table.put(column);
table.flushCommits();
}
}
table.close();
}
private boolean existsColumnFamily(HTableDescriptor tableDescriptor, ParsedColumnFamilyModel parsedColumnFamilyModel) {
return tableDescriptor.getFamily(parsedColumnFamilyModel.getName().getBytes()) != null;
}
public Configuration getConfiguration() {
return this.configuration;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy