java - 使用pig将数据存储到Hbase中

标签 java hbase apache-pig

我正在运行一个 pig 脚本来存储数据。我有这样的代码:

TOP = foreach GROUPED_DATA {
    SORTED = order WEIGHTED_DATA BY review_weight DESC;
    best_review = limit SORTED 1;
    generate group as businessid, flatten (best_review); 
    } 

此代码为我提供了每个企业的最高评价,并且我得到了如下的元组:

ID,      weight,  ID,   user_id, count
(zzxb0Y , 34.2, zzxb0Y, dVK7EAJd, 5 )

我尝试使用以下代码将其存储在 hbase 中:

STORE TOP INTO 'hbase://sample_data' USING org.apache.pig.backend.hadoop.hbase.HBaseStorage(sample_col:weight, sample_col:user_id, sample_col:count);

我收到索引越界错误:

java.lang.Exception: java.io.IOException: java.lang.IndexOutOfBoundsException: Index: 3, Size: 3
at org.apache.hadoop.mapred.LocalJobRunner$Job.runTasks(LocalJobRunner.java:462)
at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:529)
`Caused by: java.io.IOException: java.lang.IndexOutOfBoundsException: Index: 3, Size: 3

我想将数据存储在 Hbase 中,其中 ID 是键,对于每个 ID,我在 column_family 中存储三个值。请告诉我该怎么做

最佳答案

“顶部”关系有 5 列 但是你的 hbase 表有 3 列,因为第一个列是行键,所以“Top”中应该只有 4 列。重新生成顶部关系,输出应该是 ID、体重、user_id、计数 (zzxb0Y,34.2,dVK7EAJd,5)

然后使用:-

使用 org.apache.pig.backend.hadoop.hbase.HBaseStorage(sample_col:weight、sample_col:user_id、sample_col:count) 将顶部存储到“hbase://sample_data”;

关于java - 使用pig将数据存储到Hbase中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41055557/

相关文章:

java - ResultSet.getString(1) 抛出 java.sql.SQLException : Invalid operation at current cursor position

java - Docker-java API 在 Windows 10 上的 Eclipse 中连接 virtualbox ubuntu docker

hadoop - 如何选择Hadoop工具以获得更快的性能

hadoop - 打开连接后,gremlin外壳挂起

rest - 如何从 REST 客户端使用后缀 glob 从 HBase 检索多行?

java - 使用 Static 是否更好地进行内存管理?

java - 仅当应用程序处于前台时才会收到 Android 通知

hadoop - 从 CSV 文件加载中删除 header

hadoop - PIG:标量在输出中有超过一行

hadoop - 如何将CONCAT()函数的结果传递给Pig中的UDF?