如何在Hbase中读取字符串数组列

时间:2018-07-17 10:09:30

标签: hbase

如何读写hbase类型的String[]列?

例如要将字符串数组myArray写入hbase列,我们可以这样做:

Put put = new Put("r1".getBytes)

byte[] colValue1 = myArray.toString.getBytes();

put.addColumn("columnFamily".getBytes, "c1".getBytes, colValue1);

现在我该怎么读? 有更好的方法吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

这种方式不适用于从字符串数组获取字节数组。如果直接使用toString,则在获取它时将无法获取字符串数组。您可以使用这些方法将数组字符串化为字节数组,并将字节数组字符串化为字符串数组。

  private def byteArrayToStringArray(byteStrings: Array[Array[Byte]]) = {
    val data = new Array[String](byteStrings.length)

    for(i <- 0.to(byteStrings.length)) {
      data(i) = new String(byteStrings(i), Charset.defaultCharset)
    }
    data
  }


  private def stringArrayToByteArray(strings: Array[String]) = {
    val data = new Array[Array[Byte]](strings.length)
    for (i <- 0.to(strings.length)) {
      val string = strings(i)
        data(i) = string.getBytes(Charset.defaultCharset)
    }
    data
  }