HBase示 例

HBase示 例

让我们看一个HBase的示例,将文件中的数据导入到HBase表中。

示例

我们需要通过Java API将文件中的数据导入到HBase表中。

Data_file.txt文件中包含以下数据:

1,India,Bihar,Champaran,2009,April,P1,1,5
2,India, Bihar,Patna,2009,May,P1,2,10
3,India, Bihar,Bhagalpur,2010,June,P2,3,15
4,United States,California,Fresno,2009,April,P2,2,5
5,United States,California,Long Beach,2010,July,P2,4,10
6,United States,California,San Francisco,2011,August,P1,6,20

以下是Java代码:

这些数据必须被输入到通过JAVA API创建的新的HBase表中。需要创建以下列族:

"sample,region,time.product,sale,profit".

列族区域有三个列修饰符: 国家、州、城市

时间列族有两个列修饰符: 年、月

JAR文件

在编写代码时,请确保以下JAR文件已经存在,因为它们是HBase所需的。

  1. commons-loging-1.0.4
  2. commons-loging-api-1.0.4
  3. hadoop-core-0.20.2-cdh3u2
  4. hbase-0.90.4-cdh3u2
  5. log4j-1.2.15
  6. zookeper-3.3.3-cdh3u0

程序代码

import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.StringTokenizer;

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.client.HBaseAdmin;
import org.apache.hadoop.hbase.client.HTable;
import org.apache.hadoop.hbase.client.Put;
import org.apache.hadoop.hbase.util.Bytes;


public class readFromFile {
    public static void main(String[] args) throws IOException{
        if(args.length==1)
            {
            Configuration conf = HBaseConfiguration.create(new Configuration());
            HBaseAdmin hba = new HBaseAdmin(conf);
            if(!hba.tableExists(args[0])){
                HTableDescriptor ht = new HTableDescriptor(args[0]);
                ht.addFamily(new HColumnDescriptor("sample"));
                ht.addFamily(new HColumnDescriptor("region"));
                ht.addFamily(new HColumnDescriptor("time"));
                ht.addFamily(new HColumnDescriptor("product"));
                ht.addFamily(new HColumnDescriptor("sale"));
                ht.addFamily(new HColumnDescriptor("profit"));
                hba.createTable(ht);
                System.out.println("New Table Created");

                HTable table = new HTable(conf,args[0]);

                File f = new File("/home/training/Desktop/data");
                BufferedReader br = new BufferedReader(new FileReader(f));
                String line = br.readLine();
                int i =1;
                String rowname="row";
                while(line!=null && line.length()!=0){
                    System.out.println("Ok till here");
                    StringTokenizer tokens = new StringTokenizer(line,",");
                    rowname = "row"+i;
                    Put p = new Put(Bytes.toBytes(rowname));
                    p.add(Bytes.toBytes("sample"),Bytes.toBytes("sampleNo."),
Bytes.toBytes(Integer.parseInt(tokens.nextToken())));
                    p.add(Bytes.toBytes("region"),Bytes.toBytes("country"),Bytes.toBytes(tokens.nextToken()));
                    p.add(Bytes.toBytes("region"),Bytes.toBytes("state"),Bytes.toBytes(tokens.nextToken()));
                    p.add(Bytes.toBytes("region"),Bytes.toBytes("city"),Bytes.toBytes(tokens.nextToken()));
                    p.add(Bytes.toBytes("time"),Bytes.toBytes("year"),Bytes.toBytes(Integer.parseInt(tokens.nextToken())));
                    p.add(Bytes.toBytes("time"),Bytes.toBytes("month"),Bytes.toBytes(tokens.nextToken()));
                    p.add(Bytes.toBytes("product"),Bytes.toBytes("productNo."),Bytes.toBytes(tokens.nextToken()));
                    p.add(Bytes.toBytes("sale"),Bytes.toBytes("quantity"),Bytes.toBytes(Integer.parseInt(tokens.nextToken())));
                    p.add(Bytes.toBytes("profit"),Bytes.toBytes("earnings"),Bytes.toBytes(tokens.nextToken()));
                    i++;
                    table.put(p);
                    line = br.readLine();
                }
                    br.close();
                    table.close();
                }
            else
                System.out.println("Table Already exists.Please enter another table name");
        }
        else
            System.out.println("Please Enter the table name through command line");     
    }
}

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程