hbase:need suitable cloudera-quickstart-vm-5.4.2-0的jar文件

svgewumm  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(382)

我正试图通过api将数据从平面文件加载到hbase。但我收到以下错误==================================================================java.lang.numberformatexception.forinputstring(numberformatexception)。java:65)在java.lang.integer.parseint(integer。java:492)在java.lang.integer.parseint(integer。java:527)在org.apache.hadoop.hbase.hserveraddress.(hserveraddress。java:63)位于org.apache.hadoop.hbase.masteraddresstracker.getmasteraddress(masteraddresstracker)。java:63)位于org.apache.hadoop.hbase.client.hconnectionmanager$hconnectionimplementation.getmaster(hconnectionmanager)。java:354)在org.apache.hadoop.hbase.client.hbaseadmin.(hbaseadmin。java:94)在hbase.readfromfile.main(readfromfile。java:16)
代码:

package Hbase;

     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");       
    }
    }

请让我知道我们是否需要添加任何合适的jar..我使用的是cloudera cloudera-quickstart-vm-5.4.2-0
谢谢,vj

ukdjmx9f

ukdjmx9f1#

如果你读到错误,它说 Integer.parseInt 方法提出了一个 NumberFormatException . 这意味着您试图将无效格式的字符串转换为整数。在代码中,您可以在以下行中调用该方法: Bytes.toBytes(Integer.parseInt(tokens.nextToken()))); 您需要查看通过 tokens.nextToken() 并确保每个都可以转换为整数。

bvjveswy

bvjveswy2#

我认为问题在于使用的clouderajar版本。请检查一下,应该可以。

相关问题