ApacheArrow内存列式的数据结

  ApachArrow项目为列式内存存储的处理和交互提供了规范。目前来自ApachHadoop社区的开发者们致力于将它制定为大数据系统项目的事实性标准。

  ApachArrow主要有以下几点的优势:   1、列式的内存布局可以使得随机访问的速度达到O(1)。这种内存布局在处理分析流和允许SIMD(Singlinputmultipldata)优化的现代处理器上非常的高效;开发者们可以开发出非常高效的算法来处理ApachArrow的数据结构;   2、它使得系统之间数据的交互变得很高效,而且避免了数据的序列化和反序列化的消耗;   3、支持复杂的数据类型。

1、Acolumnarmmory-layoutprmittingO(1)randomaccss.Thlayoutishighlycach-fficintinanalyticsworkloadsandprmitsSIMDoptimizationswithmodrnprocssors.DvloprscancratvryfastalgorithmswhichprocssArrowdatastructurs.2、EfficintandfastdataintrchangbtwnsystmswithoutthsrializationcostsassociatdwithothrsystmslikThrift,Avro,andProtocolBuffrs.3、Aflxiblstructurddatamodlsupporting   我们知道,很多大数据项目都有其自身的内存存储结构,所以在不同项目进行数据交换的时候有70-80%CPU时间浪费在数据的srialization和dsrialization操作中,而且不同项目都需要实现同一中功能的函数:

而ApachArrow项目的出现使得所有的系统都使用相同的内存格式,系统之间的交互不需要很大的开销,新的架构如下所示。

  前面也提到过ApachArrow可以使得数据的随机访问达到O(1)。这是因为ApachArrow对分析结构化的数据进行了优化,如下的数据:

01popl=[02{03nam:‘mary’,ag:30,04placs_livd:[05{city:‘Akron’,stat:‘OH’},06{city:‘Bath’,stat:OH’}07]08},09{10nam:‘mark’,ag:33,11placs_livd:[12{city:‘Lodi’,stat:‘OH’},13{city:‘Ada’,stat:‘OH’},14{city:‘Akron’,stat:‘OH}15]16}17]

  现在假如我们需要访问popl.placs_livd.city的值。在Arrow中,数组值的访问看起来如下:

  Arrow记录了placs_livd字段和city字段的偏移量,我们可以通过这个偏移量得到字段的值。因为Arrow通过记录offst,使得数据的访问非常的高效。

ApachArrow项目







































什么方法治疗白癜风最好
北京哪个医院治疗白癜风得好



转载请注明:http://www.92nongye.com/hxjs/hxjs/204619364.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了