看相关资料,都是Spark/Hive处理批量离线数据,Storm/HBase处理实时数据。
Hive的优点很清晰,结合Spark SQL可以直接用SQL查询,开发效率高。
缺点也很明显,Hive查询时,所有数据遍历检索,查询时间长。
此外,Spark又有Spark Streaming + Kafka + HBase处理流式数据。
那我是否可以直接用Spark / HBase处理离线数据。
用Spark Streaming + Kafka + HBase处理流式数据。
优点:
1.代码可以复用,因为同样用Spark/HBase,那么同样逻辑的实时处理和离线处理,就可以使用同一套代码,开发效率高。
2.HBase因为时K/V结构,查询速度比较快,批处理离线数据反而效率高。
3.在接入物联网的场景下,有海量设备日志数据,而且很多数据时非结构性的。用Hbase反而更合适。
4.日志数据不用HBase存一份,Hive存一份,节省储存空间。
缺点:
1.HBase毕竟是K/V结构,关联查询不方便。
2.HBase不支持SQL,需要独特的语言处理,开发效率低。
相比之下,我觉得如果可行的话还是可以接收的。不知道是否有可行性。