从Hbase导出数据时的数字格式异常

时间:2015-08-11 12:33:56

标签: java hadoop hbase

我计划通过在hbase中提及starttimeendtime来导出表格。由于我是新手,我假设开始时间和结束时间是与行一起插入的时间戳。

我的表包括:

ROW        COLUMN+CELL
 1         column=d:A, timestamp=1439284609013, value=HHHH
 1         column=d:B, timestamp=1439284620216, value=HHHH111
 2         column=d:A, timestamp=1439284637133, value=HHHH
 2         column=d:B, timestamp=1439284641872, value=HHHH111
 3         column=d:A, timestamp=1439284646830, value=HHHH
 3         column=d:B, timestamp=1439284651527, value=HHHH111
 3         column=d:C, timestamp=1439284665492, value=HHHH

我执行了:

hbase org.apache.hadoop.hbase.mapreduce.Export emp1 ~/KT/bkp 1439284609013 1439284641872

我得到了:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1439284609013"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:495)
    at java.lang.Integer.parseInt(Integer.java:527)
    at org.apache.hadoop.hbase.mapreduce.Export.getConfiguredScanForJob(Export.java:112)
    at org.apache.hadoop.hbase.mapreduce.Export.createSubmittableJob(Export.java:96)
    at org.apache.hadoop.hbase.mapreduce.Export.main(Export.java:201)

帮我做什么

3 个答案:

答案 0 :(得分:4)

异常的确切原因是,1439284609013数字太大而无法容纳Integer

然而,实际问题在于其他地方。我查看了源代码,你的参数似乎错了:

emp1 ~/KT/bkp 1439284609013 1439284641872

您已经提供了String,另一个String和两个Long,这些是

  • args[0]tableName
  • args[1]outputDir
  • args[2]startTime
  • args[3]endTime

问题是,你错过了一个论点:args[2]应该是IntegerstartTime应该成为args[3]endTime应该成为args[4]  Integer

在源代码中,预期的第三个versions参数称为Export,但我并不完全知道这意味着什么。

官方文件

浏览源代码是一回事,但official docs还提供了$ bin/hbase org.apache.hadoop.hbase.mapreduce.Export <tablename> <outputdir> [<versions> [<starttime> [<endtime>]]]语法如下:

  

<versions>

     

默认情况下,导出工具仅导出给定单元格的最新版本,而不管存储的版本数量。要导出多个版本,请将1替换为所需的版本数。

包装

要获得您最初想要的东西,只需简单地添加hbase org.apache.hadoop.hbase.mapreduce.Export emp1 ~/KT/bkp 1 1439284609013 1439284641872 作为第三个参数:

$(document).ready(function(){       
    var myJson = {
      "one": "Singular sensation",
      "two": "Beady little eyes",
      "three": "Little birds pitch by my doorstep"
    };  

    alert(myJson.one);
});

答案 1 :(得分:3)

时间戳通常与Long类型相关联,具有64位

整数有32位,Java中的范围仅为-2,147,483,648到2,147,483,647

答案 2 :(得分:0)

我只输入了开始时间和结束时间。导出在开始和结束时间之前预期版本。所以最后我输入了它的版本号。

./hbase org.apache.hadoop.hbase.mapreduce.Export emp1 ~/KT/bkp 2147483647 1439284609013 1439284646830