You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@storm.apache.org by "ASF GitHub Bot (JIRA)" <ji...@apache.org> on 2014/12/26 04:59:13 UTC
[jira] [Commented] (STORM-607) storm-hbase HBaseMapState should
support user to customize the hbase-key & hbase-qualifier
[ https://issues.apache.org/jira/browse/STORM-607?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14258915#comment-14258915 ]
ASF GitHub Bot commented on STORM-607:
--------------------------------------
GitHub user dashengju opened a pull request:
https://github.com/apache/storm/pull/364
[STORM-607] storm-hbase HBaseMapState should support user to customize the hbase-key & hbase-qualifier
In HBaseMapState, user can specific hbase-qualifier by Options, and the hbase-key is composed by all the keys by multiPut's List<Object> keys.
for example, If I have stream with <deal_id, date, pv>, grouped by <deal_id, date>, then, the hbase-key is composed by<deal_id, date>, the hbase-qualifier is pv.
But when I want hbase-key is deal_id, and hbase-qualifier is pv+date, HBaseMapState can not support this.
==================================================================================
With this patch, user can customize the hbase-key & hbase-qualifier by interface TridentHBaseMapMapper.
As a old user, can use the old style like this:
HBaseMapState.Options hbaseOptions = new HBaseMapState.Options();
hbaseOptions.mapMapper = new SimpleTridentHBaseMapMapper("pv");
Also, you can customize the hbase-key & hbase-qualifier like this:
public class WithDateHBaseMapMapper implements TridentHBaseMapMapper {
private String qualifierPrefix;
public WithDateHBaseMapMapper(String qualifierPrefix) {
this.qualifierPrefix = qualifierPrefix;
}
@Override
public byte[] rowKey(List<Object> keys) {
String dealId = String.valueOf(keys.get(0));
return dealId.getBytes();
}
@Override
public String qualifier(List<Object> keys) {
String dateStr = String.valueOf(keys.get(1));
return qualifierPrefix + "_" + dateStr;
}
}
HBaseMapState.Options hbaseOptions = new HBaseMapState.Options();
hbaseOptions.mapMapper = new WithDateHBaseMapMapper("pv");
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/dashengju/storm branch_for_storm_hbase_extend
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/storm/pull/364.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #364
----
commit e6f509f82c30eaed5f2b3a6db5340d1438020adc
Author: dashengju <da...@qq.com>
Date: 2014-12-26T03:53:19Z
make user to specific the key and qualifier of storm-hbase HBaseMapState
----
> storm-hbase HBaseMapState should support user to customize the hbase-key & hbase-qualifier
> ------------------------------------------------------------------------------------------
>
> Key: STORM-607
> URL: https://issues.apache.org/jira/browse/STORM-607
> Project: Apache Storm
> Issue Type: Improvement
> Components: storm-hbase
> Affects Versions: 0.9.3
> Reporter: DashengJu
> Assignee: DashengJu
>
> In HBaseMapState, user can specific hbase-qualifier by Options, and the hbase-key is composed by all the keys by multiPut's List<Object> keys.
> for example, If I have stream with <deal_id, date, pv>, grouped by <deal_id, date>, then, the hbase-key is composed by<deal_id, date>, the hbase-qualifier is pv.
> But when I want hbase-key is deal_id, and hbase-qualifier is pv+date, HBaseMapState can not support this.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)