本帖最后由 wscl1213 于 2016-1-12 19:29 编辑
我们首先来看tuple的本质是什么?然后在来看的他最大限制:
############################################## storm使用tuple来作为它的数据模型。每个tuple是一堆值,每个值有一个名字,并且每个值可以是任何类型, 在我的理解里面一个tuple可以看作一个没有方法的java对象。总体来看,storm支持所有的基本类型、字符串以及字节数组作为tuple的值类型。你也可以使用你自己定义的类型来作为值类型, 只要你实现对应的序列化器(serializer)。 一个Tuple代表数据流中的一个基本的处理单元,例如一条cookie日志,它可以包含多个Field,每个Field表示一个属性。
Tuple本来应该是一个Key-Value的Map,由于各个组件间传递的tuple的字段名称已经事先定义好了,所以Tuple只需要按序填入各个Value,所以就是一个Value List。 一个没有边界的、源源不断的、连续的Tuple序列就组成了Stream。
##################################################### tuple是什么?它的数据类型是由我们来定义的。那么它可以是基本类型、字符串以及字节数组作等。 这时候就好办,那么基本类型、字符串以及字节数组 有大小限制吗?字符串可以是50M,数组可以是50M吗?这就是我们的数据结构是否扎实了。只要你的内存足够,字符串可以是50M,如果你的内存100G,你的tuple 理论上50G都没有关系。如果你的内存只有1G,但是你的字符串最多几K,因为可能还有其它运行的程序,所以上面只是理论,楼主可以自己在亲自测试下
|