将嵌套实体存储在Hbase中,并将其作为hive中的行读取

时间:2015-05-12 00:53:40

标签: hadoop hive hbase

我的要求是将一个嵌套实体(POJO对象数组)从Java编写到Hbase,并将它们作为Hive中的单个记录读取。

(i,e)从Java编写时,它只是一个字符串(Array)。但是从hive来看,数组代表了整个表格。因此,配置单元应该将数组的各个元素作为其中的单个记录。

对此有任何帮助将不胜感激。

谢谢, GK

1 个答案:

答案 0 :(得分:0)

也许您应该看一下Hive UDTF functions explode,这取决于您存储的内容以及您需要检索的内容,它们可能适合您,但请注意它们有一些重要的限制:

  
      
  • 不支持SELECT SELECT pageid, explode(adid_list) AS myCol...中不允许使用其他表达式
  •   
  • UDTF无法嵌套SELECT explode(explode(adid_list)) AS myCol...不受支持
  •   
  • 不支持GROUP BY / CLUSTER BY / DISTRIBUTE BY / SORT BY SELECT explode(adid_list) AS myCol ... GROUP BY myCol不是   支持的
  •   

如果标准UDTF不适合你的情况并且你心情愉快,你也可以这样做:

  1. 将数组的每个项目存储为不同列中的json字符串:i0,i1,i2 ... iN
  2. Write your own UDTF function处理每一行列,每列发出一行。
  3. 恕我直言,我只是在数组的每个元素上写一行,将每个数组项的索引附加到rowkey,处理数据时会更快,并且你会有更少的麻烦。如果是这样的话,你不应该担心写入数十亿行。