CN111213126B - 用于处理数据块的方法和数据分析系统 - Google Patents

用于处理数据块的方法和数据分析系统 Download PDF

Info

Publication number
CN111213126B
CN111213126B CN201880067105.5A CN201880067105A CN111213126B CN 111213126 B CN111213126 B CN 111213126B CN 201880067105 A CN201880067105 A CN 201880067105A CN 111213126 B CN111213126 B CN 111213126B
Authority
CN
China
Prior art keywords
data
block
data block
record
mark position
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201880067105.5A
Other languages
English (en)
Other versions
CN111213126A (zh
Inventor
E·P·小哈丁
A·D·赖利
C·H·金斯利
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Otrex Co ltd
Original Assignee
Otrex Co ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Otrex Co ltd filed Critical Otrex Co ltd
Publication of CN111213126A publication Critical patent/CN111213126A/zh
Application granted granted Critical
Publication of CN111213126B publication Critical patent/CN111213126B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • G06F16/273Asynchronous replication or reconciliation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/21Design, administration or maintenance of databases
    • G06F16/215Improving data quality; Data cleansing, e.g. de-duplication, removing invalid entries or correcting typographical errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Bus Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

数据分析系统在块高速缓存中存储多个顺序的数据块。每个数据块包含一个或多个数据记录。数据记录中的每个数据记录都包含一个或多个值以及记录标记,所述记录标记用于标记数据记录的末尾。数据分析系统将块高速缓存中的数据块分配给工作线程。工作线程解析数据块以标识该数据块内包含的一个或多个数据记录。数据分析系统确定数据块是否被正确解析。响应于确定数据块已被正确解析,数据分析系统将数据块内包含的一个或多个数据记录提供给数据分析工作流。

Description

用于处理数据块的方法和数据分析系统
技术领域
概括而言,所描述的实施例涉及在计算机系统中处理数据,并且具体而言,涉及异步处理从存储设备取回的数据块。
背景技术
数据分析涉及从大数据集中提取具有商业价值的信息。例如,小型企业可以利用第三方数据分析环境,其采用专用的计算和人力资源来收集、处理和分析来自各种来源(例如,外部数据提供者、内部数据源(例如,本地计算机上的文件)、大数据存储库和基于云的数据(例如,社交媒体信息)的大量数据。以提取有用的定量和定性信息的方式处理数据分析中使用的这样的大数据集通常需要在功能强大的计算平台上实现的复杂软件工具。
另外,需要有效的数据处理技术来访问、处理和分析来自不同数据源的大数据集。否则,可能会出现性能瓶颈,并阻碍数据分析平台的功能,延迟数据处理并降低从数据中提取的信息质量。例如,处理数据记录以输入到数据分析系统中的吞吐量是一个重要的考虑因素。如果数据记录处理缓慢,则数据分析平台的消费数据记录的部分可能需要等待记录,从而导致整个平台中的延迟
发明内容
通过用于在数据分析系统中处理数据块的方法、计算机实现的数据分析系统和计算机可读存储器解决了以上和其他问题。该方法的实施例包括在块高速缓存中存储多个顺序的数据块。每个数据块包含一个或多个数据记录。每个数据记录包含一个或多个值以及记录标记,所述记录标记对数据记录的末尾进行标记。该方法还包括将块高速缓存中的数据块分配给工作线程。该方法还包括由所述工作线程解析所述数据块,以识别所述数据块内包含的一个或多个数据记录。该方法还包括确定所述数据块是否被正确解析。该方法还包括响应于确定所述数据块被正确解析,将数据块内包含的一个或多个数据记录提供给在数据分析系统上执行的数据分析工作流。
计算机实现的数据分析系统的实施例包括用于执行计算机程序指令的计算机处理器。该系统还包括非暂时性计算机可读存储器,其存储可由计算机处理器执行以执行操作的计算机程序指令。该操作包括在块高速缓存中存储多个顺序的数据块。每个数据块包含一个或多个数据记录。每个数据记录包含一个或多个值以及记录标记,所述记录标记对数据记录的末尾进行标记。该操作还包括将块高速缓存中的数据块分配给工作线程。该操作还包括由所述工作线程解析所述数据块,以识别所述数据块内包含的一个或多个数据记录。该操作还包括确定所述数据块是否被正确解析。该操作还包括响应于确定所述数据块被正确解析,将数据块内包含的一个或多个数据记录提供给在数据分析系统上执行的数据分析工作流。
非暂时性计算机可读存储器的实施例存储可执行计算机程序指令。指令可执行以执行操作。该操作包括在块高速缓存中存储多个顺序的数据块。每个数据块包含一个或多个数据记录。每个数据记录包含一个或多个值以及记录标记,所述记录标记对数据记录的末尾进行标记。该操作还包括将块高速缓存中的数据块分配给工作线程。该操作还包括由所述工作线程解析所述数据块,以识别所述数据块内包含的一个或多个数据记录。该操作还包括确定所述数据块是否被正确解析。该操作还包括响应于确定所述数据块被正确解析,将数据块内包含的一个或多个数据记录提供给在数据分析系统上执行的数据分析工作流。
附图说明
图1是示出根据一个实施例的包括数据分析系统的数据分析环境的框图。
图2是示出根据一个实施例的使用数据分析系统处理数据来创建的工作流的框图。
图3是示出根据实施例的用作图1的数据分析系统的典型计算机系统的功能视图的高级框图。
图4是示出根据一个实施例的数据分析系统的数据分析应用的更详细视图的框图。
图5是示出根据一个实施例的数据分析应用的数据接收器模块的更详细视图的框图。
图6是示出数据块与数据记录之间的示例关系的图。
图7是示出根据一个实施例的处理从数据源接收的数据块的方法的流程图。
图8是示出根据一个实施例的解析数据块的方法的流程图。
附图仅出于说明的目的描绘了各种实施例。本领域技术人员将从以下讨论中容易地认识到,在不脱离本文所述实施例的原理的情况下,可以采用本文所示的结构和方法的替代实施例。在各个附图中,相同的附图标记和标记指示相同的元素。
具体实施例
图1是示出根据一个实施例的包括数据分析系统110的数据分析环境100的框图。环境100还包括经由网络130连接到数据分析系统110的多个数据源120。尽管所示的环境100仅包含耦合到多个数据源120的一个数据分析系统110,但是实施例可以具有多个数据分析系统以及单一数据源。
数据源120向数据分析系统110提供电子数据。数据源120可以是诸如硬盘驱动器(HDD)或固态驱动器(SSD)之类的存储设备、管理和提供对多个存储设备的访问的计算机、存储区域网络(SAN)、数据库或云存储系统。数据源120也可以是可以从另一源取回数据的计算机系统。数据源120可以远离数据分析系统110并且经由网络130提供数据。另外,一些或所有数据源120可以直接耦合到数据分析系统并且在不将数据通过网络130传递数据的情况下提供数据。
由数据源120提供的数据通常被组织成数据记录,每个数据记录包括一个或多个值。例如,由数据源120提供的数据记录可以包括一系列逗号分隔的值。数据使用数据分析系统110来描述与企业相关的信息。例如,来自数据源120的数据可以描述基于计算机的与网站上可访问的内容和/或与社交媒体应用的交互(例如,跟踪数据的点击)。
数据分析系统110是用于处理和分析大量数据的基于计算机的系统。经由网络130从多个数据源120收集、聚集或以其他方式访问数据。数据分析系统110可以实现可缩放的软件工具和硬件资源,该可缩放的软件工具和硬件资源在访问、准备、混合和分析来自多种数据源的数据时被采用。例如,数据分析系统110支持数据密集型过程和工作流的执行。数据分析系统110可以是用于实现包括本文所述的异步数据处理技术的数据分析功能的计算设备。
数据分析系统110可以配置为支持一个或多个软件应用,如图1所示为数据分析应用140。数据分析应用140处理并分析从一个或多个数据源120获取的大量数据。在一些情况下,数据分析应用140提供软件,其支持由多个最终用户对数据分析工具和宏的网络访问或基于云的访问。作为示例,数据分析应用140允许用户以类似于移动应用商店或其他基于云的服务的方式共享、浏览和消费分析。可以将分析数据、宏和工作流打包并执行为较小规模和可定制的分析应用(例如,app),例如其可以由数据分析系统110的其他用户访问。在一些情况下,可以由数据分析系统110管理对发布的分析应用的访问,即授予或撤消访问权限,从而提供访问控制和安全功能。数据分析应用140可以执行与分析app相关联的功能,例如创建、部署、发布、迭代、更新等。另外,数据分析应用140可以支持在数据分析中涉及的各个阶段处执行的功能,例如访问、准备、混合、分析和输出分析结果的能力。
数据分析应用140还可以支持软件工具,以经由可视图形用户界面(GUI)设计和执行可重复的工作流。作为示例,与数据分析应用140相关联的GUI提供用于数据混合、数据处理和高级数据分析的拖放式工作流环境。此外,工作流可以包括执行特定处理操作或数据分析功能的一系列数据处理工具。是工作流的一部分的每个工具执行与特定于该工具的数据相关的功能。例如,工作流可以包括实现各种数据分析功能的工具,这些功能包括以下一项或多项:输入/输出;准备;结合;预测性的;空间的;调查以及解析和转换操作。结合图2描述了关于工作流的更多细节。
数据分析应用140从数据源120读取数据块。例如,数据分析应用140可以从SSD读取数据块。数据分析应用140处理每个数据块以提取其内包含的数据记录。这些数据记录由数据分析应用140实现的数据分析工作流处理。
在一个实施例中,数据分析应用140异步地处理从数据源120接收的多个数据块。数据分析应用140使用并行执行的多个工作线程来同时处理数据块以产生数据记录。每个数据块通常包括多个数据记录,并且数据记录的边界通常不与数据块的边界对齐。因此,数据记录可以跨越两个相邻的块。此外,线程可以乱序地处理数据块,并且不同的线程可以处理相邻的块。
数据分析应用140通过推测性地处理某些数据记录并随后确认该处理是正确的来考虑跨越相邻块的数据记录。如果推测性的处理错误,则仅需要重新处理数据记录中被错误处理的部分。下文将更详细描述的该技术允许数据分析应用140将数据块处理成数据记录,并以高吞吐量将数据记录提供给数据分析工作流。在一个实施例中,吞吐量为2.0GB/秒,相比之下,使用其他技术的吞吐量约为0.1GB/秒。实际上,该技术通常可以支持与数据源120可以物理地提供数据块的速率相等的持续数据传输。该技术允许数据分析应用140有效地操作,而不由于处理数据块时的延迟而遭受性能损失。
网络130代表数据分析系统110和数据源120之间的通信路径。在一个实施例中,网络130是互联网,并使用标准通信技术和/或协议。因此,网络130可以包括使用以下技术的链路:例如以太网、802.11、微波访问的全球互通(WiMAX)、3G、长期演进(LTE)、数字用户线(DSL)、异步传输模式(ATM)、无限宽带(InfiniBand)、PCI Express高级交换等。类似地,在网络130上使用的联网协议可以包括多协议标签交换(MPLS)、传输控制协议/互联网协议(TCP/IP)、用户数据报协议(UDP)、超文本传输协议(HTTP)、简单邮件传输协议(SMTP)、文件传输协议(FTP)等。
通过网络130交换的数据可以使用包括超文本标记语言(HTML)、可扩展标记语言(XML)等的技术和/或格式来表示。此外,所有或一些链接可以使用常规加密技术来加密,所述常规加密技术例如安全套接字层(SSL)、传输层安全性(TLS)、虚拟专用网(VPN)、互联网协议安全性(IPsec)等。在另一实施例中,实体可以使用自定义和/或专用数据通信技术以替代或附加于上述技术中的技术。
图2是示出根据一个实施例的使用数据分析系统110处理数据以创建工作流200的框图。在一个实施例中,使用由数据分析系统110的GUI支持的视觉工作流环境来创建工作流200。视觉工作流环境实现一组拖放工具,其消除了提供软件代码以设计工作流的需要,并且消除了识别要由工作流实现的复杂公式的需要。在另一实施例中,在诸如可扩展标记语言(XML)文档之类的文档中创建和描述工作流200。工作流200由数据分析系统110的计算机设备执行。然而,在其他实施例中,工作流200被部署到可以经由网络(例如,网络130)通信地连接到数据分析系统110的另一计算机设备。
工作流可以包括执行特定处理操作或数据分析功能的一系列工具。作为一般示例,工作流的工具可以执行以下数据分析功能中的一项或多项:输入/输出;准备;结合;预测性的;空间的;调查,以及解析和转换操作。实现工作流可能涉及定义、执行和自动化数据分析过程,其中,数据被传递到工作流中的每个工具,并且每个工具对所接收的数据执行其相应的处理操作。包括个体记录的聚合组的分组可以被传递通过工作流的工具,这允许个体处理操作对数据进行更有效的操作。即使在处理大量数据的情况下,这样的聚合技术也可以提高开发和运行工作流的速度。工作流可以定义可重复的一系列操作,或以其他方式构造这些操作,从而对指定工具的操作顺序进行指定。在一些情况下,工作流中包括的工具以线性次序执行。在其他情况下,多个工具并行执行。
如图所示,图2的工作流200包括输入/输出工具,被示出为输入工具205和206以及浏览工具230。输入工具205和206工作以访问来自特定数据源120的记录。输入工具205和206将所访问的记录带入工作流中并将记录提供给工作流200的后续工具。在此示例中,输入工具205将访问的记录提供给过滤器工具210,并且输入工具206将访问的记录提供给选择工具211。浏览工具230位于工作流200的末尾处,并接收由于执行工作流200的每个上游工具而得到的输出。尽管在此示例中,浏览工具230位于工作流200的末尾处,但是可以在工作流中任何点处添加浏览工具230以查看和验证来自工作流的上游工具的执行的结果。
在继续图2的示例时,工作流200包括准备工具,示出为过滤器工具210、选择工具211、公式工具215和样本工具212。过滤器工具210基于表达式查询记录,并将数据分成两个流,包括满足表达式的记录的真流和包括不满足表达式的记录的假流。选择工具211可以用于选择、取消选择、重新排序和重命名字段、改变字段类型或大小以及指派描述。公式工具215使用一个或多个表达式创建或更新字段以执行各种各样的计算和/或操作。采样工具212将接收到的记录流限制为一定数量、一定百分比或一个随机集合的记录。工作流200还包括混合多个数据源的结合工具220。具体地,结合工具220基于公共字段(或记录位置)组合两个输入数据流。
图2的工作流200还示出了包括汇总工具225,该汇总工具是解析和变换工具,其可以将数据重构和整形为进一步分析中使用的格式。汇总工具225还可以通过分组、求和、计数、空间处理和字符串连接来执行数据汇总。在一个实施例中,由汇总工具225生成的输出包括计算的结果。
在一些实施例中,工作流200的执行将使输入工具205一次一个地将记录传递通过过滤器工具210和公式工具215,直到处理了所有记录并已经到达结合工具220。此后,输入工具206将开始一次一个地将记录传递通过选择工具211和样本工具212,直到记录被传递到相同的结合工具220。工作流200的一些个体工具可以处理用于实现其自己并行操作的能力,例如在处理最后一个数据块的同时发起对数据块的读取,或者将诸如排序工具之类的计算机密集型操作分解成多个部分。然而,在一些现有的工作流技术中,通过工作流的每个工具以流水线方式一次一个记录地个别地处理来自一组记录的每个记录,直到到达工作流中的需要多个记录来执行处理操作的工具(例如,排序工具、结合工具、汇总工具等)。
图3是示出根据实施例的用作图1的数据分析系统110的典型计算机系统300的功能视图的高级框图。计算机系统300可以执行数据分析应用140以实现图2的工作流。
所示的计算机系统包括耦合到芯片组304的至少一个处理器302。处理器302可以在同一管芯上包括多个处理器核心。芯片组304包括存储器控制器集线器320和输入/输出(I/O)控制器集线器322。存储器306和图形适配器312耦合到存储器控制器集线器320,并且显示器318耦合到图形适配器312。存储设备308、键盘310、指向设备314和网络适配器316可以耦合到I/O控制器集线器322。在一些其他实施例中,计算机系统300可以具有附加的、较少的或不同的组件并且组件可能以不同的方式耦合。例如,计算机系统300的实施例可能缺少显示器和/或键盘。另外,在一些实施例中,计算机系统300可以被实例化为机架式刀片服务器或云服务器实例。
存储器306保存由处理器302使用的指令和数据。在一些实施例中,存储器306是随机存取存储器。存储设备308是非暂时性计算机可读存储介质。存储设备308可以是HDD、SSD或其他类型的非暂时性计算机可读存储介质。由数据分析系统110处理和分析的数据可以存储在存储器306和/或存储设备308中。
指向设备314可以是鼠标、轨迹球或其他类型的指向设备,并且与键盘310结合使用以将数据输入到计算机系统300中。图形适配器312在显示器318上显示图像和其他信息。在一些实施例中,显示器318包括用于接收用户输入和选择的触摸屏功能。网络适配器316将计算机系统300耦合到网络130。
计算机系统300适于执行用于提供本文所述功能的计算机模块。如本文所使用的,术语“模块”是指计算机程序指令和用于提供指定功能的其他逻辑。可以用硬件、固件和/或软件来实现模块。模块可以包括一个或多个过程,和/或仅由过程的一部分提供。通常将模块被存储在存储设备308上,被加载到存储器306中,并由处理器302执行。
图4是示出根据一个实施例的数据分析系统110的数据分析应用140的更详细视图的框图。数据分析应用140包括数据接收器模块410、工具模块420和数据输出模块430。本领域技术人员将认识到,其他实施例可以具有与这里描述的组件不同的组件和/或其他组件,并且功能可以以不同的方式分布在组件之间。
数据接收器模块410从数据源120接收数据。在一个实施例中,数据接收器模块410从数据源接收数据块并解析数据块以产生数据记录。例如,数据接收器模块410可以接收从SSD读取的数据块,其中每个数据块包括多个数据记录,并且一些数据记录可以跨越多个数据块。数据接收器模块410将数据记录传递到数据分析应用140内的其他模块。
工具模块420提供一组数据处理工具,其执行特定的处理操作或数据分析功能,包括以下各项中的一项或多项:输入/输出;准备;结合;预测性的;空间;调查以及解析和转换操作。工具对由数据接收器模块410从数据源120接收的数据记录进行操作。工具模块420提供结合图2描述的工作流200中包括的工具。
数据输出模块430输出由数据分析应用140执行的处理的结果。也就是说,数据输出模块430接收通过工作流200的执行产生的经处理的数据记录,并使数据记录可用于其他系统和/或人工审核者。例如,数据输出模块430可以提供GUI,与企业相关联的人工审核者可以通过所述GUI来审核由于处理与企业相关联的数据记录而产生的工作流200的输出。
图5是示出根据一个实施例的数据分析应用140的数据接收器模块410的更详细视图的框图。数据接收器模块410包括文件读取模块510、块高速缓存520、多个工作线程530、解析状态高速缓存540和报告模块550。本领域技术人员将认识到,其他实施例可以具有与此处描述的组件不同的和/或其他的其他组件,并且可以以不同的方式在组件之间分配功能。
文件读取模块510从数据源120读取包括数据块的文件,并且管理数据块的处理。例如,文件读取模块510可以从SSD读取一个或多个文件。该文件作为一组顺序数据块存储在数据源120上。块的大小可以变化,并且在一个实施例中为256KB。文件读取模块510通过将对文件的特定数据块的一个或多个输入/输出(I/O)请求发送到数据源120来读取文件。在一个实施例中,通过同时发出许多单独的I/O请求(其中,每个请求对特定的块进行请求),文件读取模块510按顺序次序请求文件中的所有块。例如,文件读取模块510可以同时发出针对文件的前100个块的一批100个I/O请求,并且当满足第一批中的请求时,发出针对下一顺序块的附加请求。尽管I/O请求以顺序次序对块进行请求,但是数据源120可以以不同的次序完成请求并返回非顺序的块。
文件读取模块510将由数据源120返回的数据块存储在块高速缓存520中。在块由工作线程530处理的同时,块高速缓存520存储块。在一个实施例中,块高速缓存520具有固定大小,并且因此拥有固定数量的块。另外,文件读取模块510管理块高速缓存器520,使得给定的块(由其序列号标识)保证在块高速缓存器中的特定位置中。该位置被计算为块的序列号模可以被保存在块高速缓存520中的块的数量。
以这种方式管理块高速缓存520减少了在由工作线程530对块进行异步并行处理期间可能发生的资源争用。由于块高速缓存520是固定大小的,并且如果块在高速缓存中,则其位于已知位置处,因此无需在高速缓存上保持全局锁。高速缓存中的每个块都包含三个原子变量,这些变量促进独立于其他块管理该块:1)引用该块的工作线程数的计数;2)在给定时间由该高速缓存位置表示的块的序列号;以及3)该块所位于的高速缓存位置的状态(例如,可用、未决、未使用、已释放)。这些变量允许在恒定时间内确定高速缓存中给定块的可用性,而无需获取锁。
文件读取模块510将块高速缓存520中的块传递给工作线程530以进行处理。存在多个独立执行的工作线程530。每个线程可以在处理器302的单独处理器核心上执行。工作线程530解析块高速缓存520中的数据块,以提取其中包含的数据记录。
工作线程530一次解析单个数据块,并且多个线程同时集体地处理多个块。给定线程530通过使用由文件读取模块510提供的应用编程接口(API)进行“获取任何块”请求以从块高速缓存530请求数据块。线程530响应于该请求接收在块高速缓存520中的块(等同地,指向块的指针或对块的引用)。响应于此API调用而接收到的块是尚未由另一线程处理的块;该块不一定是与由该线程处理的前一个块顺序相关的。API调用也可能返回指示当前没有块可用于处理的消息。在这种情况下,线程可能在等待块变为可用的同时执行其他任务。
工作线程530通过从头到尾顺序读取块来解析数据块,以识别其中包含的数据记录以及部分数据记录。在一个实施例中,每个数据记录包含一组描绘的数据值,并由记录标记终止。例如,数据记录可以包含一组逗号分隔的值(CSV)。记录标记是标记记录的末尾的一个或多个特殊的值,例如换行符或回车符后跟换行符。因此,工作线程530解析在紧接记录标记之后的位置处开始并延伸到下一记录标记的数据记录。给定的数据块可以保存多个记录,并且一个数据记录可以跨越多个数据块。
解析状态高速缓存540存储描述由工作线程530解析的数据块的信息。在一个实施例中,解析状态高速缓存540保存与由工作线程530解析的数据块相对应的数据对象。数据对象中的信息包括相关联的数据块中的第一记录标记的真实位置和第一记录标记的估计位置,以及在该块内开始的已解析的数据记录。数据对象中的信息还可以指示相关联的数据块是否被正确解析,以及是否需要重新解析该数据块。当线程解析数据块时,工作线程530更新对象中的信息。
在操作中,工作线程530对文件读取模块510进行“获取任何块”API调用,以便从块高速缓存520获取数据块。然后,工作线程530按顺序次序扫描数据块以找到第一记录标记。工作线程530从紧接在第一记录标记之后的数据记录开始,将数据块解析到末尾。工作线程530将解析后的数据记录存储在解析状态高速缓存540中的相关联的对象中。工作线程530还将在数据块中找到的第一记录标记的位置记录在解析状态高速缓存540中。
该记录的位置被称为数据块中的“估计的”第一记录标记,这是因为由于工作线程仅具有在该位置末尾处的记录的部分上下文,因此有可能错误地检测到该位置。例如,在一些CSV文件中,数据可能用引号引起来。因此,用引号引起来的换行字符是记录内的数据,而不是记录标记。解析记录的工作线程530不知道先前的记录是否以带引号的文本结束,因此,即使该字符是引用的一部分,它也可能错误地将换行符解析为记录标记。
一旦工作线程530解析到数据块的末尾,工作线程就对文件读取模块510进行“获取下一块”API调用。该调用请求下一顺序数据块,即顺序地跟随工作线程530刚解析的块的数据块。另外,“获取下一块”API调用释放工作线程已解析的前一个块。
工作线程530接收所请求的下一顺序数据块,并从头到第一记录标记解析该块。所解析的数据被附加到在在先数据块的末尾处解析的数据记录,并存储在解析状态高速缓存540中。此外,工作线程530将第一记录标记的位置记录在与下一顺序块相对应的解析状态高速缓存对象中。该位置被记录在解析状态对象中,作为该块中第一记录标记的真实位置。也就是说,已知位置是准确的,这是因为工作线程具有在此位置处结束的记录的完整上下文。
在一个实施例中,工作线程530确定真实的第一记录标记位置是否与针对数据块(即,下一顺序数据块)的估计的第一记录标记位置匹配。如果位置匹配,则这意味着所估计的第一记录标记位置正确,并且数据块被正确解析。在这种情况下,工作线程530在该块的解析状态高速缓存对象中存储指示该块被正确解析的指示。
如果真实的第一记录标记位置与所估计的第一记录标记位置不匹配,则这意味着该数据块未被正确解析。在这种情况下,工作线程530在该块的解析状态高速缓存对象中存储指示该块被错误地解析并且需要重新解析的指示。在一个实施例中,工作线程530对文件读取模块510进行API调用,以将数据块标记为需要再次解析。然后,文件读取模块510可以指派工作线程530以使用正确的第一记录标记位置来解析数据块。
文件读取模块510使用块高速缓存520和解析状态高速缓存540中的信息来将数据记录释放到工作流200的工具模块420。在一个实施例中,文件读取模块510从块高速缓存520释放给定块的数据记录,一旦没有工作线程使用该块,文件中的所有先前块已被释放,并且解析状态高速缓存540指示该块被正确解析。文件读取模块510还同时从块高速缓存520释放该数据块。因此,文件读取模块510本质上使用块高速缓存520作为在整个文件上移动的滑动窗口,预加载工作线程530的块(经由文件读取模块I/O请求),并且一旦块的处理完成就释放该块。文件读取模块510有效地满足许多独立工作线程的需求,并且比其他解决方案使用更少的存储器,从而提高了数据分析系统110和应用140的性能。
报告模块550在释放记录时选择性地输出消息。消息被输出到数据分析应用140的另一组件,例如到特定工具模块420。在一个示例中,当特定记录被释放时,和/或当在该特定记录之前的所有记录被释放时,报告模块550输出消息。因此,报告模块550提供了在特定记录被释放或发生其他事件时通知数据分析应用140的组件的设施。
图6是示出数据块与数据记录之间的示例关系的图。图6示出了三个顺序数据块610、620和630以及七个顺序数据记录615、625、635、645、655、665和675。数据记录未与数据块完全对齐。例如,数据块610包括记录615和625的全部,以及记录635的部分。记录635在块610中开始,并在块620中途结束。解析块620的工作线程530将首先读取数据记录635的一部分,然后读取记录635的记录标记,然后读取包括其记录标记的记录645的全部,然后读取记录655的一部分。
假设文件读取模块510将块620分配给工作线程530。解析块620的工作线程530扫描数据块,直到找到标记记录635的末尾的记录标记。工作线程350将与块620相对应的解析状态高速缓存对象中的记录标记的位置记录为该块的所估计的第一记录标记位置。然后,它解析从记录645开始(进阶在第一记录标记位置之后开始)到块的末尾的数据块620,将解析结果存储在该块的解析状态高速缓存对象中。
在解析数据块620的同时,工作线程530解析数据记录655的一部分到数据块620的末尾。然后,工作线程530请求并获得数据块630,并释放数据块620。工作线程530从开始解析数据块630直到其到达指示记录655的末尾的记录标记(即,数据块中的第一记录标记)。所解析的来自块630的数据被附加到来自块620的记录655的数据,从而形成完整的数据记录,并且该信息被存储在块620的解析状态高速缓存对象中。工作线程530将标记记录655的末尾的标记记录为在解析与块相对应的状态高速缓存对象时的块630的真实的第一记录标记位置。
工作线程530确定块630的所估计的第一记录标记位置(其由不同的工作线程记录在解析状态高速缓存对象中)是否与该块的真实的第一记录标记位置匹配。如果位置匹配,则工作线程530在框630的解析状态高速缓存对象中存储指示该框被正确解析的指示。如果位置不匹配,则工作线程530对文件读取模块510进行API调用,以将数据块630标记为需要从真实的第一记录标记位置再次进行解析。
图7是示出根据一个实施例的处理从数据源120接收的数据块的方法700的流程图。在一些实施例中,该方法由数据接收器模块410执行,尽管该方法中的一些或全部操作在其他实施例中可以由其他实体执行。在一些实施例中,流程图中的操作以不同次序执行并且包括不同和/或附加的步骤。
数据接收器模块410从数据源120接收710数据块。例如,数据接收器模块410可以响应于向SSD发出的I/O请求来接收数据块。当数据块是顺序的时,数据接收器模块410可以乱序地接收710块。数据接收器模块410将数据块存储720在块高速缓存520中。数据接收器模块410将块分配730给工作线程530。每个数据块被分配给个体的工作线程530。工作线程530解析数据块,并且多个工作线程共同并行地解析多个数据块。数据接收器模块410维护740在解析状态高速缓存540中的描述工作线程530的解析活动的解析状态信息。数据接收器模块410将数据记录从解析的数据块释放750到数据分析工作流,并且基于块高速缓存和解析状态高速缓存540中的信息来从块高速缓存520释放数据块。虽然图7中未示出,但是当从块高速缓存520释放数据块时,数据接收器模块410可以从数据源120接收更多数据块。
图8是示出根据一个实施例的解析数据块的方法800的流程图。在一些实施例中,该方法由数据接收器模块410的组件执行,所述组件包括文件读取模块510和工作线程530。该方法中的一些或全部操作在其他实施例中可以由其他实体执行。在一些实施例中,流程图中的操作以不同次序执行,并且可以包括不同和/或附加的步骤。
文件读取模块510将块高速缓存520中的数据块分配810给工作线程530。工作线程530按顺序次序扫描数据块以找到820其内的第一记录标记的估计位置。工作线程530解析830数据块中的数据记录,其紧接在第一记录标记之后开始。工作线程530将解析结果保存在该数据块的解析状态高速缓存对象中。工作线程530还将对象中的第一记录标记的位置保存为该数据块的所以估计的第一记录标记位置。
工作线程530获得下一顺序数据块,并将对该块解析840为第一记录标记。工作线程530将解析的记录与来自该记录的剩余数据一起存储在先前数据块的解析状态高速缓存对象中。另外,工作线程530将解析状态高速缓存540中的第一记录标记的位置存储850为下一顺序数据块的真实的第一记录标记的位置。
工作线程530还确定860和870下一顺序数据块中的真实的第一记录位置是否与所估计的第一记录位置相匹配,估计的第一记录位置由另一工作线程存储在该数据块的解析状态高速缓存对象中。如果两个位置不匹配,则工作线程530在该块的解析状态高速缓存对象中存储890指示其被错误地解析并且需要重新解析的指示。文件读取模块510将检测该指示并将该块分配给工作线程530以使用真实的第一记录位置进行解析。如果两个位置确实匹配,则下一顺序数据块被正确解析,并且文件读取模块510将数据记录从该块释放到工具模块420。一旦验证了在步骤830处由工作线程530解析的先前的数据块的所估计的第一记录标记位置,该块也将被释放。
组件的特定命名、术语的大写、属性、数据结构或任何其他编程或结构方面不是强制性的或重要的,并且实现所描述的实施例的机制可以具有不同的名称、格式或协议。此外,可以如所描述的经由硬件和软件的组合来实现该系统,或者可以完全以硬件元件来实现该系统。同样,本文中描述的各种系统组件之间的功能的特定划分仅仅是示例性的,而不是强制性的;由单个系统组件执行的功能可以替代地由多个组件执行,并且由多个组件执行的功能可以替代地由单个组件执行。
以上描述的一些部分根据对信息的操作的算法和符号表示来呈现特征。这些算法描述和表示是由数据处理领域的技术人员用来最有效地将其工作的实质传达给本领域其他技术人员的手段。这些操作尽管在功能上或逻辑上进行了描述,但应理解为由计算机程序实现。此外,在不失一般性的情况下,有时将这些操作的布置称为模块或以功能名称来对其进行指代被证明是方便的。
除非另外具体声明,否则从以上讨论中显而易见的是,应理解在整个描述中,利用诸如“处理”或“运算”或“计算”或“确定”或“显示”等的术语的讨论是指计算机系统或类似电子计算设备的动作和过程,该动作和过程在计算机系统存储器或寄存器或其他此类信息存储、传输或显示设备内操纵和转换被表示为物理(电子)量的数据。
本文描述的某些实施例包括以算法形式描述的过程步骤和指令。应当注意,实施例的过程步骤和指令可以体现在软件、固件或硬件中,并且当体现在软件中时,可以被下载以驻留在由实时网络操作系统使用的不同平台上并从其操作。
最后,应该注意的是,本说明书中使用的语言主要是出于可读性和指导性目的而选择的,并且可能没有被选择来描绘或限制本发明的主题。因此,实施例的公开旨在是说明性的,而不是限制性的。

Claims (20)

1.一种在数据分析系统中处理数据块的计算机实现的方法,包括:
在块高速缓存中存储多个顺序的数据块,每个数据块包含一个或多个数据记录,每个数据记录包含一个或多个值以及记录标记,所述记录标记对所述数据记录的末尾进行标记;
将所述块高速缓存中的数据块分配给工作线程;
由所述工作线程解析所述数据块,以识别所述数据块内包含的所述一个或多个数据记录;
通过以下步骤确定所述数据块是否被正确解析:
确定所述数据块中真实的第一记录标记位置;
确定估计的第一记录标记位置是否与所述真实的第一记录标记位置匹配;以及
响应于所述估计的第一记录标记位置与所述真实的第一记录标记位置匹配,确定所述数据块被正确解析;以及
响应于确定所述数据块被正确解析,将所述数据块内包含的所述一个或多个数据记录提供给在所述数据分析系统上执行的数据分析工作流。
2.根据权利要求1所述的方法,其中,在所述块高速缓存中存储所述多个顺序数据块包括:
向数据源发出多个输入/输出(I/O)请求,所述多个I/O请求对多个顺序排序的数据块进行请求;
响应于所述多个I/O请求,从所述数据源接收所述多个顺序排序的数据块,其中,所述多个顺序排序的数据块以不同于所述数据块的次序的次序从所述数据源接收;
将所接收的多个顺序排序的数据块存储在所述块高速缓存中。
3.根据权利要求2所述的方法,其中,所述多个顺序排序的数据块被存储在响应于所述数据块的次序而确定的所述块高速缓存中的位置处。
4.根据权利要求1所述的方法,其中,存在多个工作线程,并且将所述块高速缓存中的数据块分配给工作线程包括:
将多个数据块分配给多个工作线程,所述多个工作线程适于同时解析所分配的多个数据块。
5.根据权利要求1所述的方法,其中,由所述工作线程解析所述数据块以识别所述数据块内包含的所述一个或多个数据记录包括:
扫描所述数据块以识别所述数据块内的第一记录标记位置;
解析所述数据块中的位于所述第一记录标记位置之后的数据记录;以及
由所述工作线程解析下一顺序数据块中的在所述下一顺序数据块内的第一记录标记位置之前发生的数据记录。
6.根据权利要求1所述的方法,其中,通过所述工作线程解析所述数据块来找到所述数据块的所述估计的第一记录标记位置;
由另一工作线程找到所述数据块中的所述真实的第一记录标记位置。
7.根据权利要求1所述的方法,还包括:
响应于所述估计的第一记录标记位置与所述真实的第一记录标记位置不匹配,确定所述数据块被错误地解析;以及
响应于确定所述数据块被错误地解析,使用所述数据块中的所述真实的第一记录标记位置来重新解析所述数据块。
8.一种用于处理数据块的计算机实现的数据分析系统,包括:
计算机处理器,其用于执行计算机程序指令;以及
非暂时性计算机可读存储器,其存储计算机程序指令,所述计算机程序指令能够由所述计算机处理器执行以执行操作,所述操作包括:
在块高速缓存中存储多个顺序的数据块,每个数据块包含一个或多个数据记录,每个数据记录包含一个或多个值以及记录标记,所述记录标记对所述数据记录的末尾进行标记;
将所述块高速缓存中的数据块分配给工作线程;
由所述工作线程解析所述数据块,以识别所述数据块内包含的所述一个或多个数据记录;
通过以下步骤确定所述数据块是否被正确解析:
确定所述数据块中真实的第一记录标记位置;
确定估计的第一记录标记位置是否与所述真实的第一记录标记位置匹配;以及
响应于所述估计的第一记录标记位置与所述真实的第一记录标记位置匹配,确定所述数据块被正确解析;以及
响应于确定所述数据块被正确解析,将所述数据块内包含的所述一个或多个数据记录提供给在所述数据分析系统上执行的数据分析工作流。
9.根据权利要求8所述的系统,其中,在所述块高速缓存中存储所述多个顺序数据块包括:
向数据源发出多个输入/输出(I/O)请求,所述多个I/O请求对多个顺序排序的数据块进行请求;
响应于所述多个I/O请求,从所述数据源接收所述多个顺序排序的数据块,其中,所述多个顺序排序的数据块以不同于所述数据块的次序的次序从所述数据源接收;
将所接收的多个顺序排序的数据块存储在所述块高速缓存中。
10.根据权利要求9所述的系统,其中,所述多个顺序排序的数据块被存储在响应于所述数据块的次序而确定的所述块高速缓存中的位置处。
11.根据权利要求8所述的系统,其中,存在多个工作线程,并且将所述块高速缓存中的数据块分配给工作线程包括:
将多个数据块分配给多个工作线程,所述多个工作线程适于同时解析所分配的多个数据块。
12.根据权利要求8所述的系统,其中,由所述工作线程解析所述数据块以识别所述数据块内包含的所述一个或多个数据记录包括:
扫描所述数据块以识别所述数据块内的第一记录标记位置;
解析所述数据块中的位于所述第一记录标记位置之后的数据记录;以及
由所述工作线程解析下一顺序数据块中的在所述下一顺序数据块内的第一记录标记位置之前发生的数据记录。
13.根据权利要求8所述的系统,其中,通过所述工作线程解析所述数据块找到所述数据块的估计的第一记录标记位置;
由另一工作线程找到所述数据块中的所述真实的第一记录标记位置。
14.根据权利要求8所述的系统,其中,所述操作还包括:
响应于所述估计的第一记录标记位置与所述真实的第一记录标记位置不匹配,确定所述数据块被错误地解析;以及
响应于确定所述数据块被错误地解析,使用所述数据块中的所述真实的第一记录标记位置来重新解析所述数据块。
15.一种非暂时性计算机可读存储器,其存储用于在数据分析系统中处理数据块的可执行计算机程序指令,所述指令能够执行以执行操作,所述操作包括:
在块高速缓存中存储多个顺序的数据块,每个数据块包含一个或多个数据记录,每个数据记录包含一个或多个值以及记录标记,所述记录标记对所述数据记录的末尾进行标记;
将所述块高速缓存中的数据块分配给工作线程;
由所述工作线程解析所述数据块,以识别所述数据块内包含的所述一个或多个数据记录;
通过以下步骤确定所述数据块是否被正确解析:
确定所述数据块中真实的第一记录标记位置;
确定估计的第一记录标记位置是否与所述真实的第一记录标记位置匹配;以及
响应于所述估计的第一记录标记位置与所述真实的第一记录标记位置匹配,确定所述数据块被正确解析;以及
响应于确定所述数据块被正确解析,将所述数据块内包含的所述一个或多个数据记录提供给在所述数据分析系统上执行的数据分析工作流。
16.根据权利要求15所述的非暂时性计算机可读存储器,其中,在所述块高速缓存中存储所述多个顺序数据块包括:
向数据源发出多个输入/输出(I/O)请求,所述多个I/O请求对多个顺序排序的数据块进行请求;
响应于所述多个I/O请求,从所述数据源接收所述多个顺序排序的数据块,其中,所述多个顺序排序的数据块以不同于所述数据块的次序的次序从所述数据源接收;
将所接收的多个顺序排序的数据块存储在所述块高速缓存中。
17.根据权利要求15所述的非暂时性计算机可读存储器,其中,存在多个工作线程,并且将所述块高速缓存中的数据块分配给工作线程包括:
将多个数据块分配给多个工作线程,所述多个工作线程适于同时解析所分配的多个数据块。
18.根据权利要求15所述的非暂时性计算机可读存储器,其中,由所述工作线程解析所述数据块以识别所述数据块内包含的所述一个或多个数据记录包括:
扫描所述数据块以识别所述数据块内的第一记录标记位置;
解析所述数据块中的位于所述第一记录标记位置之后的数据记录;以及
由所述工作线程解析下一顺序数据块中的在所述下一顺序数据块内的第一记录标记位置之前发生的数据记录。
19.根据权利要求15所述的非暂时性计算机可读存储器,其中,通过所述工作线程解析所述数据块来找到所述数据块的所述估计的第一记录标记位置;以及
由另一工作线程找到所述数据块中的所述真实的第一记录标记位置。
20.根据权利要求15所述的非暂时性计算机可读存储器,其中,所述操作还包括:
响应于所述估计的第一记录标记位置与所述真实的第一记录标记位置不匹配,确定所述数据块被错误地解析;以及
响应于确定所述数据块被错误地解析,使用所述数据块中的所述真实的第一记录标记位置来重新解析所述数据块。
CN201880067105.5A 2017-10-16 2018-10-15 用于处理数据块的方法和数据分析系统 Active CN111213126B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US15/785,357 US10552452B2 (en) 2017-10-16 2017-10-16 Asynchronously processing sequential data blocks
US15/785,357 2017-10-16
PCT/US2018/055898 WO2019079190A1 (en) 2017-10-16 2018-10-15 ASYNCHRONOUS PROCESSING OF SEQUENTIAL DATA BLOCKS

Publications (2)

Publication Number Publication Date
CN111213126A CN111213126A (zh) 2020-05-29
CN111213126B true CN111213126B (zh) 2021-09-10

Family

ID=66097078

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201880067105.5A Active CN111213126B (zh) 2017-10-16 2018-10-15 用于处理数据块的方法和数据分析系统

Country Status (9)

Country Link
US (2) US10552452B2 (zh)
EP (1) EP3698243B1 (zh)
JP (1) JP6890721B2 (zh)
KR (1) KR102211613B1 (zh)
CN (1) CN111213126B (zh)
AU (1) AU2018350900B2 (zh)
CA (1) CA3076623C (zh)
SG (1) SG11202001673YA (zh)
WO (1) WO2019079190A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10552452B2 (en) * 2017-10-16 2020-02-04 Alteryx, Inc. Asynchronously processing sequential data blocks
US11150939B2 (en) * 2019-02-28 2021-10-19 Salesforce.Com, Inc. Composite batching to manage throughput for online commerce applications
US11061754B2 (en) * 2019-08-06 2021-07-13 Alteryx, Inc. Error handling during asynchronous processing of sequential data blocks
CN111651489A (zh) * 2020-06-05 2020-09-11 厦门理工学院 一种大数据处理服务器系统
US11074107B1 (en) 2020-11-04 2021-07-27 RazorThink, Inc. Data processing system and method for managing AI solutions development lifecycle

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832310A (en) * 1993-12-30 1998-11-03 Unisys Corporation Serial I/O channel having dependent and synchronous sources of control data and user defined data
US9183200B1 (en) * 2012-08-02 2015-11-10 Symantec Corporation Scale up deduplication engine via efficient partitioning

Family Cites Families (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06187100A (ja) 1992-12-19 1994-07-08 Fuji Xerox Co Ltd レコード抽出装置
US5875454A (en) 1996-07-24 1999-02-23 International Business Machiness Corporation Compressed data cache storage system
US6625671B1 (en) 1999-05-03 2003-09-23 Computer Network Technology Corporation Compression of buffered data
JP2001014139A (ja) 1999-06-28 2001-01-19 Nec Corp ワークファイルを使用するマルチスレッドソート処理方式及び処理方法
US6606704B1 (en) 1999-08-31 2003-08-12 Intel Corporation Parallel multithreaded processor with plural microengines executing multiple threads each microengine having loadable microcode
US6564274B1 (en) 1999-12-17 2003-05-13 Omnicluster Technologies, Inc. Modular architecture for small computer networks
ATE480822T1 (de) * 2001-02-13 2010-09-15 Candera Inc Failover-verarbeitung in einem speicherungssystem
US20040236785A1 (en) 2003-05-22 2004-11-25 Greiner Dylan E. Method and system for transmitting a digital image over a communication network
US7003597B2 (en) 2003-07-09 2006-02-21 International Business Machines Corporation Dynamic reallocation of data stored in buffers based on packet size
US7188227B2 (en) 2003-09-30 2007-03-06 International Business Machines Corporation Adaptive memory compression
US7711876B2 (en) 2005-03-23 2010-05-04 International Business Machines Corporation Dynamic category compression in a data storage library
US7523123B2 (en) 2006-11-16 2009-04-21 Yahoo! Inc. Map-reduce with merge to process multiple relational datasets
US7899840B2 (en) 2007-03-29 2011-03-01 Microsoft Corporation Group joins to navigate data relationships
US9331919B2 (en) 2007-11-30 2016-05-03 Solarwinds Worldwide, Llc Method for summarizing flow information of network devices
WO2010033877A1 (en) 2008-09-19 2010-03-25 Oracle International Corporation Storage-side storage request management
US20100115182A1 (en) 2008-11-06 2010-05-06 Sony Corporation Flash memory operation
US9552299B2 (en) 2010-06-11 2017-01-24 California Institute Of Technology Systems and methods for rapid processing and storage of data
US20120011144A1 (en) 2010-07-12 2012-01-12 Frederik Transier Aggregation in parallel computation environments with shared memory
US8515945B2 (en) 2010-11-16 2013-08-20 Sybase, Inc. Parallel partitioning index scan
US9436558B1 (en) 2010-12-21 2016-09-06 Acronis International Gmbh System and method for fast backup and restoring using sorted hashes
JP5712609B2 (ja) 2010-12-24 2015-05-07 富士通株式会社 データ処理装置及びデータ記録方法
US9703706B2 (en) * 2011-02-28 2017-07-11 Oracle International Corporation Universal cache management system
WO2013009503A2 (en) 2011-07-08 2013-01-17 Yale University Query execution systems and methods
US8499122B2 (en) * 2011-11-21 2013-07-30 Microsoft Corporation Asynchronous data binding
AU2013214801B2 (en) * 2012-02-02 2018-06-21 Visa International Service Association Multi-source, multi-dimensional, cross-entity, multimedia database platform apparatuses, methods and systems
US8880481B1 (en) 2012-03-29 2014-11-04 Pivotal Software, Inc. Inverse distribution function operations in a parallel relational database
EP2857975A4 (en) 2012-05-31 2016-03-02 Univ Tokyo PARALLEL DATA PROCESSING SYSTEM, COMPUTER, AND METHOD FOR PARALLEL DATA PROCESSING
US20130339473A1 (en) 2012-06-15 2013-12-19 Zynga Inc. Real time analytics via stream processing
US9471656B2 (en) 2013-03-15 2016-10-18 Uda, Llc Massively-parallel system architecture and method for real-time extraction of high-value information from data streams
US9817612B2 (en) 2014-11-20 2017-11-14 International Business Machines Corporation High-performance hash joins using memory with extensive internal parallelism
US10013443B2 (en) 2015-06-25 2018-07-03 Bank Of America Corporation Comparing data stores using hash sums on disparate parallel systems
US10346435B2 (en) * 2015-10-23 2019-07-09 Oracle International Corporation System and method for improved performance in a multidimensional database environment
US20180144015A1 (en) * 2016-11-18 2018-05-24 Microsoft Technology Licensing, Llc Redoing transaction log records in parallel
US10489350B2 (en) 2017-02-24 2019-11-26 Advanced Micro Devices, Inc. Data compression with inline compression metadata
US10552452B2 (en) * 2017-10-16 2020-02-04 Alteryx, Inc. Asynchronously processing sequential data blocks

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5832310A (en) * 1993-12-30 1998-11-03 Unisys Corporation Serial I/O channel having dependent and synchronous sources of control data and user defined data
US9183200B1 (en) * 2012-08-02 2015-11-10 Symantec Corporation Scale up deduplication engine via efficient partitioning

Also Published As

Publication number Publication date
CA3076623A1 (en) 2019-04-25
JP6890721B2 (ja) 2021-06-18
US11494409B2 (en) 2022-11-08
EP3698243B1 (en) 2024-01-24
KR20200051836A (ko) 2020-05-13
US20200142906A1 (en) 2020-05-07
WO2019079190A1 (en) 2019-04-25
JP2020537261A (ja) 2020-12-17
CA3076623C (en) 2020-07-07
EP3698243A1 (en) 2020-08-26
AU2018350900B2 (en) 2020-06-18
EP3698243A4 (en) 2021-08-11
US20190114353A1 (en) 2019-04-18
US10552452B2 (en) 2020-02-04
SG11202001673YA (en) 2020-03-30
AU2018350900A1 (en) 2020-03-05
CN111213126A (zh) 2020-05-29
KR102211613B1 (ko) 2021-02-02

Similar Documents

Publication Publication Date Title
CN111213126B (zh) 用于处理数据块的方法和数据分析系统
US20200034742A1 (en) Consistent filtering of machine learning data
US11100420B2 (en) Input processing for machine learning
US9229932B2 (en) Conformed dimensional data gravity wells
US11630716B2 (en) Error handling during asynchronous processing of sequential data blocks
US20180196858A1 (en) Api driven etl for complex data lakes
US10996855B2 (en) Memory allocation in a data analytics system
US20220253338A1 (en) Memory management through control of data processing tasks

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant