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项目什么方法治疗白癜风最好北京哪个医院治疗白癜风得好