package an.hbase.operation;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.MasterNotRunningException;
import org.apache.hadoop.hbase.ZooKeeperConnectionException;
import org.apache.hadoop.hbase.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.client.Result;
public class HbasicOperation {
/**
* @param args
* @throws IOException
*/
private static String inputfile = "/home/an/plateform/logData/SogouQ.sample";//输入的数据
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
/**init the configuration of Hbase*/
Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorun", "localhost");
HBaseAdmin admin = new HBaseAdmin(conf);
/**
* 测试使用java类来读取文件,然后将生成的文件进行文本分析,
* 提取对应的关键字来创建相应的table,并将
* 生成的数据导入进去
* */
FileInputStream fis = new FileInputStream(inputfile ); //打开文件
InputStreamReader isr = new InputStreamReader(fis, "gbk" );
BufferedReader br = new BufferedReader(isr);
String[] contents = {"visit_time","user_id","query","link_rank","click_url"};
String log = null ;
/**HBaseAdmin.create() 可以用来创建一张新表,该方法的参数为HTableDescription
* 用来描述表名和相关的列簇。该方法的返回值为HTable类,用于对表进行相关的操作
* */
HTableDescriptor tableDescripter = new HTableDescriptor("Sogou".getBytes());
tableDescripter.addFamily(new HColumnDescriptor("fam1"));
admin.createTable(tableDescripter);
HTable table = new HTable(conf,"Sogou");
int num_line = 1;//输入的row编号
while ((log = br.readLine()) != null ) {
String[] logs = log.split("\t");
if(logs.length != 5){//不是正常的日志文件
continue; //进入下一次循环
}
//加入行
Put putRow = new Put(String.valueOf(num_line).getBytes());
for(int i = 0;i < 5; i++){
putRow.add("fam1".getBytes(),contents[i].getBytes(),logs[i].getBytes());
table.put(putRow);
}//for
num_line ++;
} //while
}//main
}
Hbase 导入数据
最新推荐文章于 2024-03-31 17:12:44 发布