在HBase中解析文本文件和导入到表



我是HBase新手,我已经将一个TextFormat格式的表数据导出为如下格式的文本文件

72 6f 77 31 keyvalues={row1/cf:a/1444817478342/Put/vlen=6/ts=0}

相同的数据我想导入到表中,我已经尝试通过给这个文件输入到Hbase导入,但它期待SequenceFile格式,并试图通过改变输入格式类TextInputFormat来调整导入,但仍然不工作。

可以使用java程序上传数据,而不是导出。
示例代码:
公共类HBaseDataInsert {配置设计;HTable HTable;HBaseScan HBaseScan;

public HBaseDataInsert() throws IOException {
    conf = HBaseConfiguration.create();
    hTable = new HTable(conf, "emp_java");
}
public void upload_transactionFile() throws IOException {
    String currentLine = null;
    BufferedReader br = new BufferedReader(
            new FileReader("transactionsFile.csv"));
    while ((currentLine = br.readLine()) != null) {
        System.out.println(currentLine);
        String[] line = currentLine.split(",");
        Put p = new Put(Bytes.toBytes(line[0] + "_" + line[1]));
        p.add(Bytes.toBytes("details"), Bytes.toBytes("Name"), Bytes.toBytes(line[0]));
        p.add(Bytes.toBytes("details"), Bytes.toBytes("id"), Bytes.toBytes(line[1]));
        p.add(Bytes.toBytes("details"), Bytes.toBytes("DATE"), Bytes.toBytes(line[2]));
        p.add(Bytes.toBytes("transaction details"), Bytes.toBytes("TRANSACTION_TYPE"), Bytes.toBytes(line[3]));
        hTable.put(p);
    }
    br.close();
    hTable.close();
}

导出和导入,默认情况下使用序列文件转储。如果您的需求只是从一个表加载到另一个表,假设两者具有相似的格式,则可以使用以下命令。此输入和输出目录为HDFS目录。

$ bin/hbase org.apache.hadoop.hbase.mapreduce.Export

$ bin/hbase org.apache.hadoop.hbase.mapreduce.Import

相关内容

  • 没有找到相关文章

最新更新