apache-spark – 存储传入流数据的最佳方法是什么?

对于通过Spark Streaming处理的数据的长期存储(许多写入,少量读取),有什么更好的选择:Parquet,HBase或Cassandra?或者是其他东西?有什么权衡取舍? 最佳答案 根据我的经验,我们使用Hbase作为火花流数据的数据存储(我们也有相同的场景,许多写入和少量读取),因为我们使用hadoop,hbase与hadoop本地集成,并且进展顺利..

>上面我们使用了来自慰借的消息的高速率.
> HBase非常适合进行基于范围的扫描. Casandra以其可用性和许多其他东西而闻名……
>但是,我还可以观察到许多项目中的一个大趋势,它们只是通过带有spark数据帧(SaveMode.Append)的火花流将hdfs(镶木地板avro)中的rawdata存储在分区结构中,并且他们正在使用Spark处理rawdata

在hdfs中的分区结构的Ex:
完成businessdate / environment / businesssubtype / message type等….
在这种情况下,无需转到Hbase或任何其他数据存储.

但上述方法中的一个常见问题是,当您获得小而小的文件时,通过流式传输然后您需要重新分配(1)或colelese或FileUtils.copymerge以满足单个分区文件的块大小要求.除了以上方法也没关系.

这里有一些叫做CAP theorm的东西,可以根据这个决定做出决定.
《apache-spark – 存储传入流数据的最佳方法是什么?》

>一致性(所有节点同时看到相同的数据).
>可用性(每个请求都会收到有关它的响应
成功还是失败).
>分区容差(系统继续
尽管由于网络故障而进行任意分区仍可运行

Casandra支持AP.

Hbase支持CP.

看看here给出的详细分析

点赞