【发布时间】:2017-03-29 07:24:35
【问题描述】:
我在 Hbase 中有一个表,其中有一个名为 a 的列族,其中大约有 30 列。下面是一个显示两个行键的单元格值的示例-
ROW COLUMN+CELL
00:001000574 column=a:aasbig, timestamp=1486493154559, value=true
00:001000574 column=a:aasdel, timestamp=1486493154559, value=true
00:001000574 column=a:aasdhq, timestamp=1486493154559, value=false
00:001000574 column=a:aasfsc, timestamp=1486493154559, value=true
00:001000574 column=a:aasgbm, timestamp=1486493154559, value=true
00:001000574 column=a:aasgbr, timestamp=1486493154559, value=true
00:001000574 column=a:aasmcu, timestamp=1486493154559, value=true
00:001000574 column=a:aasser, timestamp=1486493154559, value=true
00:001000574 column=a:aastlp, timestamp=1486493154559, value=true
00:001000574 column=a:aasvia, timestamp=1486493154559, value=true
00:001000707 column=a:aasbig, timestamp=1486493154559, value=false
00:001000707 column=a:aasdel, timestamp=1486493154559, value=false
00:001000707 column=a:aasdhq, timestamp=1486493154559, value=true
00:001000707 column=a:aasfsc, timestamp=1486493154559, value=false
00:001000707 column=a:aasgbm, timestamp=1486493154559, value=false
00:001000707 column=a:aasgbr, timestamp=1486493154559, value=false
00:001000707 column=a:aasmcu, timestamp=1486493154559, value=false
00:001000707 column=a:aasser, timestamp=1486493154559, value=false
00:001000707 column=a:aastlp, timestamp=1486493154559, value=false
00:001000707 column=a:aasvia, timestamp=1486493154559, value=false
每一列都有一个带有true 或false 的值。这些值可能会发生变化,一周后这些值可能会有所不同。我想捕捉旧值和新值。结果应存储在 CSV 文件中。
我的要求是,当我第一次运行代码时,我应该看到 OLDVALUE 为 NULL,并且 HBase 表中的所有值都应该是 NEWVALUE 的一部分。
以下是我第一次运行时希望在 CSV 文件中看到的输出。
NUM,PRODUCT,OLDVALUE,NEWVALUE
001000574,aasbig,NULL,true
001000574,aasdel,NULL,true
001000574,aasdhq,NULL,false
001000574,aasfsc,NULL,true
001000574,aasgbm,NULL,true
001000574,aasgbr,NULL,true
001000574,aasmcu,NULL,true
001000574,aasser,NULL,true
001000574,aastlp,NULL,true
001000574,aasvia,NULL,true
001000707,aasbig,NULL,false
001000707,aasdel,NULL,false
001000707,aasdhq,NULL,true
001000707,aasfsc,NULL,false
001000707,aasgbm,NULL,false
001000707,aasgbr,NULL,false
001000707,aasmcu,NULL,false
001000707,aasser,NULL,false
001000707,aastlp,NULL,false
001000707,aasvia,NULL,false
从第二次开始,当我运行代码时,上一次运行的 NEWVALUES 中的所有值现在应该在 OLDVALUES 之下,NEWVALUES 应该从 HBase 表中获取当前值。像下面的示例输出
NUM,PRODUCT,OLDVALUE,NEWVALUE
001000574,aasbig,true,true
001000574,aasdel,true,true
001000574,aasdhq,false,false
001000574,aasfsc,true,true
001000574,aasgbm,true,false
001000574,aasgbr,true,true
001000574,aasmcu,true,false
001000574,aasser,true,false
001000574,aastlp,true,true
001000574,aasvia,true,true
001000707,aasbig,false,true
001000707,aasdel,false,true
001000707,aasdhq,true,true
001000707,aasfsc,false,false
001000707,aasgbm,false,false
001000707,aasgbr,false,false
001000707,aasmcu,false,true
001000707,aasser,false,true
001000707,aastlp,false,false
001000707,aasvia,false,true
我尝试了什么:
我创建了一个 Hive-on-Hbase 表,在查询表时,我只能得到 NUM 和 value。我无法获取 HBase 列名。除非我实施一些连接操作,否则我在获取旧值和新值方面也遇到了挑战。
我们可以编写 Pig 脚本来实现这一点吗?
非常感谢任何帮助。
【问题讨论】:
标签: hadoop hbase apache-pig