前言
之前因为仅仅是把HBase当成一个可横向扩展并且具有持久化能力的KV数据库,所以用于指标存储。这次将HBase用在用户行为存储上,因为Rowkey的过滤功能也很不错,可以很方便的把按人或者内容过滤出所有的行为,从某种意义上,HBase的是有且仅有一个多字段复合索引存储。
虽然我比较推崇实时计算的,然而补数据或者需要计算历史数据的时候,批处理就少不了。这里有两个选择,一个是基于HBase的行为数据进行计算,或者基于原始的Hive数据进行计算,最终选择了前者,这里就涉及到Spark(StreamingPro) 对HBase的操作了。
难点
和Spark 整合,意味着最好能有Schema(Mapping),但是HBase 有没有Schema取决于使用者。所以通常SparkOnHBase的库都要求你定义一个Mapping(Schema),比如hortonworks的 SHC( https://github.com/hortonworks-spark/shc ) 就要求你定义一个如下的配置:
{
"rowkey":"key",
"table":{"namespace":"default", "name":"pi_user_log", "tableCoder":"PrimitiveType"},
"columns":{"col0":{"cf":"rowkey", "col":"key", "type":"string"},
"col1":{"cf":&