我是hbase新手,我已将文本格式的表数据导出为以下格式的文本文件。72 6f 77 31 keyvalues={row1/cf:a/1444817478342/put/vlen=6/ts=0}与我要导入到表中的数据相同,我尝试将此文件输入到hbase导入,但它需要sequencefile格式,并尝试通过将input format类更改为textinputformat来调整导入,但仍然不起作用。是否有任何指导线可以满足我的要求。
ve7v8dk21#
您可以使用java程序上传数据,而不是导出数据。示例代码:公共类hbastainsert{configuration conf;htable表;hbascan hbascan;
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(); }
nhjlsmyf2#
默认情况下,导出和导入与序列文件转储一起工作。如果您的需求只是从一个表加载到另一个表,假设两个表的格式相似,那么可以使用以下命令。输入和输出目录是hdfs目录。$bin/hbase org.apache.hadoop.hbase.mapreduce.export文件$bin/hbase org.apache.hadoop.hbase.mapreduce.import
2条答案
按热度按时间ve7v8dk21#
您可以使用java程序上传数据,而不是导出数据。
示例代码:
公共类hbastainsert{configuration conf;htable表;hbascan hbascan;
nhjlsmyf2#
默认情况下,导出和导入与序列文件转储一起工作。如果您的需求只是从一个表加载到另一个表,假设两个表的格式相似,那么可以使用以下命令。输入和输出目录是hdfs目录。
$bin/hbase org.apache.hadoop.hbase.mapreduce.export文件
$bin/hbase org.apache.hadoop.hbase.mapreduce.import