本发明涉及计算机技术领域,特别涉及一种基于kudu的数据查询方法和装置。
背景技术:
随着计算机应用技术的不断发展,数据中心需要存储的数据量不断增加,通常需要在数据中心部署kudu分布式存储系统来存储海量的数据。kudu作为一种分布式存储系统,包括一个主服务器节点和多个从服务器节点,其依赖于hadoop(分布式系统基础架构)。
目前,hadoop包括多个组件,且各个组件具有不同的功能。当需要对kudu中存储的待查询数据进行查询以实现对其进行删除及修改等处理时,则需要同时部署hdfs及parquet等多个组件才能实现对kudu中存储的数据进行查询,不能通过sql语句查询kudu中存储的数据。
技术实现要素:
本发明实施例提供了一种基于kudu的数据查询方法及装置,可实现通过sql语句查询kudu中存储的数据。
第一方面,本发明提供了一种基于kudu的数据查询方法,包括:
接收对应待查询数据的sql语句;
解析所述sql语句,以获取至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值;
根据获取的所述至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值,构建语法解析树;
根据所述语法解析树查询所述kudu中存储的待查询数据。
优选地,
在所述解析所述sql语句之前,包括:预先设置关键词对照列表,所述关键词对照列表存储有至少一个样本关键词;
则,所述解析所述sql语句,以获取至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值,包括:
根据所述关键词对照列表中存储的至少一个样本关键词识别所述sql语句,以获取所述sql语句携带的至少一个当前关键词和每一个所述当前关键词所分别对应的变量值。
优选地,
在所述根据获取的所述至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值,构建语法解析树之前,还包括:
预先设置语法检验规则;
根据所述语法检验规则,检验获取的所述至少一个当前关键词以及各个所述当前关键词所分别对应的变量值,以确定所述sql语句的语法是否合格;
如果是,则执行所述根据获取的所述至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值,构建语法解析树;
否则,生成对应所述sql语句的错误提示信息。
优选地,
在所述根据所述语法解析树查询所述kudu中存储的待查询数据之前,还包括:
获取所述kudu的主服务器节点的通信地址,并根据所述通信地址连接所述kudu的所述主服务器节点;
则,所述根据所述语法解析树查询所述kudu中存储的待查询数据,包括:根据所述语法解析树,向所述kudu的所述主服务器节点发送数据处理指令,以使所述kudu的所述主服务器节点根据所述数据处理指令对所述kudu的至少一个从服务器节点中存储的所述待查询数据进行相应的业务处理。
优选地,
在所述根据所述语法解析树查询所述kudu中存储的待查询数据之前,进一步包括:设置数据转化规则;
则所述根据所述语法解析树查询所述kudu中存储的待查询数据,包括:
根据所述数据转化规则对所述语法解析树中的至少一个对象参数进行转化处理;
根据转化处理后的所述语法解析树查询所述kudu中存储的待查询数据。
第二方面,本发明实施例提供了一种基于kudu的数据查询装置,包括:
输入模块,用于接收对应待查询数据的sql语句;
词法解析模块,用于解析所述sql语句,以获取至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值;
语法处理模块,用于根据获取的所述至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值,构建语法解析树;
查询处理模块,用于根据所述语法解析树查询所述kudu中存储的待查询数据。
优选地,
还包括:关键词对照列表;其中,
所述关键词对照列表,用于存储至少一个样本关键词;
则,所述词法解析模块,用于根据所述关键词对照列表中存储的至少一个样本关键词识别所述sql语句,以获取所述sql语句携带的至少一个当前关键词和每一个所述当前关键词所分别对应的变量值。
优选地,
还包括:第一设置模块、语法校验模块和警示模块;其中,
所述第一设置模块,用于预先设置语法检验规则;
所述语法校验模块,用于根据所述语法检验规则,检验获取的所述至少一个当前关键词以及各个所述当前关键词所分别对应的变量值,以确定所述sql语句的语法是否合格,如果是,则触发所述语法处理模块;否则,触发所述警示模块;
所述语法处理模块,用于在所述语法校验模块的触发下,根据获取的所述至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值,构建语法解析树;
所述警示模块,用于在所述语法校验模块的触发下,生成对应所述sql语句的错误提示信息。
优选地,
还包括:通信处理模块;其中,
所述通信处理模块,用于获取所述kudu的主服务器节点的通信地址,并根据所述通信地址连接所述kudu的所述主服务器节点;
所述查询处理模块,用于根据所述语法解析树,向所述kudu的所述主服务器节点发送数据处理指令,以使所述kudu的所述主服务器节点根据所述数据处理指令对所述kudu的至少一个从服务器节点中存储的所述待查询数据进行相应的业务处理。
优选地,
还包括:第二设置模块;其中,
所述第二设置模块,用于设置数据转化规则;
则,所述查询处理模块,用于根据所述数据转化规则对所述语法解析树中的至少一个对象参数进行转化处理;根据转化处理后的所述语法解析树查询所述kudu中存储的待查询数据。
本发明实施例提供了一种基于kudu的数据查询方法和装置,该方法中,仅需要接收对应待查询数据的sql语句,则可对接收的sql语句进行解析以得到至少一个当前关键词,同时得到各个当前关键词所分别对应的变量值,后续则可根据各个当前关键词以及各个当前关键词所分别对应的变量值构建出可以被kudu所识别的语法解析树,进而根据构建的语法解析树查询kudu中存储的待查询数据。从而实现通过sql语句查询kudu中存储的数据。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一实施例提供的一种基于kudu的数据查询方法的流程图;
图2是本发明一实施例提供的另一种基于kudu的数据查询方法的流程图;
图3是本发明一实施例提供的一种基于kudu的数据查询装置的结构示意图;
图4是本发明一实施例提供的另一种基于kudu的数据查询装置的结构示意图
图5是本发明一实施例提供的又一种基于kudu的数据查询装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例,基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
如图1所示,本发明实施例提供了一种基于kudu的数据查询方法,包括:
步骤101,接收对应待查询数据的sql语句;
步骤102,解析所述sql语句,以获取至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值;
步骤103,根据获取的所述至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值,构建语法解析树;
步骤104,根据所述语法解析树查询所述kudu中存储的待查询数据。
本发明上述实施例中,仅需要接收对应待查询数据的sql语句,则可对接收的sql语句进行解析以得到至少一个当前关键词,同时得到各个当前关键词所分别对应的变量值,后续则可根据各个当前关键词以及各个当前关键词所分别对应的变量值构建出可以被kudu所识别的语法解析树,进而根据构建的语法解析树查询kudu中存储的待查询数据。从而实现通过sql语句查询kudu中存储的数据。
为了确保能够识别出sql语句中携带的指定关键词,本发明一个实施例中,在所述解析所述sql语句之前,包括:预先设置关键词对照列表,所述关键词对照列表存储有至少一个样本关键词;
则,所述解析所述sql语句,以获取至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值,包括:
根据所述关键词对照列表中存储的至少一个样本关键词识别所述sql语句,以获取所述sql语句携带的至少一个当前关键词和每一个所述当前关键词所分别对应的变量值。
本发明上述实施例中,通过将各个指定关键词作为样本关键词存储在关键词对照列表中,比如查询类型、表格名称、字段名称等指定关键词均可作为样本关键词存储在关键词对照列表中,在针对接收的sql语句进行解析时,则可根据关键词对照列表准确读取sql语句中携带的各个当前关键词,以及各个当前关键词所分别对应的变量值。
为了防止用户输入的sql语句因语法错误而形成错误的语法解析树,最终导致不能从kudu中准确查询到相应的待查询数据,本发明一个实施例中,在所述根据获取的所述至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值,构建语法解析树之前,还包括:
预先设置语法检验规则;
根据所述语法检验规则,检验获取的所述至少一个当前关键词以及各个所述当前关键词所分别对应的变量值,以确定所述sql语句的语法是否合格;
如果是,则执行所述根据获取的所述至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值,构建语法解析树;
否则,生成对应所述sql语句的错误提示信息。
具体地,本发明上述实施例中可以通过检验至少一个当前关键词是否与关键词对照列表中存储的各个样本关键词一一对应,以及各个当前关键词是否分别对应的变量值是否为空来实现判断接收的sql语句的语法是否合格,当且仅当在判断出接收的sql语句的语法合格时,才根据各个当前关键词以及各个当前关键词所分别对应的变量值构建可以被kudu所识别的语法解析树;相应的,当判断出接收的sql语句语法不合格时,则可生成相应的错误提示信息,使得用户根据错误提示信息输入更为正确的sql语句。
kudu通常由一个主服务器节点和多个从服务器节点构成,数据可存储在kudu的各个从服务器节点中,且各个从服务器节点均与kudu的主服务器相连,使得主服务器节点能够与外部进行信息交互,以实现通过kudu的主服务器节点对各个从服务器节点中存储的数据进行管理。
因此,本发明一个实施例中,在所述根据所述语法解析树查询所述kudu中存储的待查询数据之前,还包括:
获取所述kudu的主服务器节点的通信地址,并根据所述通信地址连接所述kudu的所述主服务器节点;
则,所述根据所述语法解析树查询所述kudu中存储的待查询数据,包括:根据所述语法解析树,向所述kudu的所述主服务器节点发送数据处理指令,以使所述kudu的所述主服务器节点根据所述数据处理指令对所述kudu的至少一个从服务器节点中存储的所述待查询数据进行相应的业务处理。
为了确保语法解析树的数据结构以及语法解析树种的各个数据对象(包括各个当前关键词以及各个当前关键词所分别对应的变量值)能够被kudu所识别,本发明一个实施例中,在所述根据所述语法解析树查询所述kudu中存储的待查询数据之前,进一步包括:设置数据转化规则;
则所述根据所述语法解析树查询所述kudu中存储的待查询数据,包括:
根据所述数据转化规则对所述语法解析树中的至少一个对象参数进行转化处理;
根据转化处理后的所述语法解析树查询所述kudu中存储的待查询数据。
为了更加清楚的说明本发明的技术方案中,下面以kudu包括主服务器节点a和从服务器节点b1、b2,待查询数据包括数据表c1的第5列,且数据表c1存储在从服务器节点b1中为例,如图2所示,具体可以通过如下各个步骤实现kudu中存储的待查询数据:
步骤201,获取kudu的主服务器节点a的通信地址,并根据获取的通信地址连接kudu的主服务器节点a。
这里,通信地址可以是主服务器节点a的ip(internetprotocol,网络之间互连的协议)地址,在获取到主服务器节点a的ip地址之后,即可通过获取的ip地址与主服务器节点进行通信,比如通过主服务器节点a访问粗出在kudu的从服务器节点b1和b2中的数据。
步骤202,设置关键词对照列表、语法检验规则以及数据转化规则。
这里,用户可以结合实际业务需求,将一个或多个指定关键词作为样本关键词存储到关键词对照列表中。指定关键词包括但不限于:查询类型、表格名称、字段名或列编号等。
步骤203,接收用户结合实际业务需求输入的对应待查询数据的sql语句。
步骤204,根据关键词对照列表中存储的至少一个样本关键词识别sql语句,以获取sql语句携带的至少一个当前关键词和每一个当前关键词所分别对应的变量值。
应当理解的是,获取的关键词包括但不限于查询类型、表格名称、字段名或列编号中的任意一个或多个,本发明实施例仅以获取的至少一个当前关键词包括:查询类型、表格名称和列编号为例。
本发明实施例中,在针对sql语句进行解析时,还可以根据sql语句的语法规则同时得到查询类型、表格名称和列编号所分别对应的变量值。这里以查询类型所对应的变量值是drop、表格名称对应的变量值是c1、列编号对应的变量值依次是5为例。
步骤205,根据设置的语法检验规则,检验获取的至少一个当前关键词以及各个当前关键词所分别对应的变量值,以确定sql语句的语法是否合格,如果是,则执行步骤206;否则,执行步骤209。
本发明实施例中,语法检验规则可以结合实际业务需求合理设置,包括但不限于检验获取的各个当前关键词是否与关键词对照列表中的各个样本关键词一一对应,每一个关键词分别对应的变量值是否为空,当且仅当获取的各个当前关键词与关键词对照列表中的各个样本关键词一一对应,且每一个关键词分别对应的变量值均不为空时,则可判断出sql语句的语法合格。
步骤206,根据至少一个当前关键词以及每一个当前关键词所分别对应的变量值,构建语法解析树。
本发明实施例中,针对sql语句进行解析时,获取到的各个当前关键词以及各个当前关键词可以以文本形式存在,文本形式存在的数据无法被kudu所识别,这里通过利用获取的各个当前关键词和各个关键词所分别对应的变量值构建语法解析树,实现对以文本形式存在的各个当前关键词以及各个当前关键词所分别对应的变量值的数据结构进行转化,转化后形成的语法解析树所对应的数据结构能够被kudu所识别。
具体地,语法解析树可以包括多个节点,每一个节点可以是一个当前关键词,当前关键词所对应的变量值存储在当前关键词所在节点下。
步骤207,根据预先设置的数据转化规则,转化语法解析树下的各个数据对象。
应当理解的是,这里的数据对象可以是一个当前关键词,也可以是一个变量值。
举例来说,语法解析树种包括一个节点为查询类型,且该节点下存储的变量值为drop,分布式存储系统kudu中,通过参数x表征查询类型,且sql语句中通过变量值drop表征“删除”,而kudu中通过参数值n表征“删除”,可见,并不能识别前述两个参数,因此,可预先设置相应的数据转化规则,以将语法解析树中的节点“查询类型”替换为节点“x”,且在节点x下存储参数值n,从而确保语法解析树的数据结构以及语法解析树中的各个参数及参数值均能被kudu所识别。
步骤208,根据转化后的语法解析树,向kudu的主服务器节点a发送数据处理指令。
这里,主服务器节点a则可对转化后的语法解析树进行识别,并执行根据转化后的语法解析树访问从服务器节点b1存储的数据表c1,并针对数据表c1中对应列编号为5的数据列进行删除处理,从而实现通过sql语句查询kudu中存储的待查询数据。
步骤209,生成对应sql语句的错误提示信息。
这里,用户则可根据生成的错误提示信息了解到输入的sql语句存在语法错误,可修改或编辑更为准确的sql语句。方便后续过程中根据更为准确的sql语句准确查询kudu中存储的待查询数据。
如图3所示,本发明实施例提供了一种基于kudu的数据查询装置,包括:
输入模块301,用于接收对应待查询数据的sql语句;
词法解析模块302,用于解析所述sql语句,以获取至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值;
语法处理模块303,用于根据获取的所述至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值,构建语法解析树;
查询处理模块304,用于根据所述语法解析树查询所述kudu中存储的待查询数据。
如图4所示,本发明一个实施例中,所述装置还包括:关键词对照列表401;其中,
所述关键词对照列表401,用于存储至少一个样本关键词;
则,所述词法解析模块302,用于根据所述关键词对照列表中存储的至少一个样本关键词识别所述sql语句,以获取所述sql语句携带的至少一个当前关键词和每一个所述当前关键词所分别对应的变量值。
如图4所示,本发明一个实施例中,所述装置还包括:第一设置模块402、语法校验模块403和警示模块404;其中,
所述第一设置模块402,用于预先设置语法检验规则;
所述语法校验模块403,用于根据所述语法检验规则,检验获取的所述至少一个当前关键词以及各个所述当前关键词所分别对应的变量值,以确定所述sql语句的语法是否合格,如果是,则触发所述语法处理模块303;否则,触发所述警示模块404;
所述语法处理模块303,用于在所述语法校验模块的触发下,根据获取的所述至少一个当前关键词以及每一个所述当前关键词所分别对应的变量值,构建语法解析树;
所述警示模块404,用于在所述语法校验模块的触发下,生成对应所述sql语句的错误提示信息。
如图5所示,本发明一个实施例中,所述装置还包括:通信处理模块501;其中,
所述通信处理模块501,用于获取所述kudu的主服务器节点的通信地址,并根据所述通信地址连接所述kudu的所述主服务器节点;
所述查询处理模块304,用于根据所述语法解析树,向所述kudu的所述主服务器节点发送数据处理指令,以使所述kudu的所述主服务器节点根据所述数据处理指令对所述kudu的至少一个从服务器节点中存储的所述待查询数据进行相应的业务处理。
本发明一个实施例中,所述装置还包括:第二设置模块(附图中未示出);其中,
所述第二设置模块,用于设置数据转化规则;
则,所述查询处理模块,用于根据所述数据转化规则对所述语法解析树中的至少一个对象参数进行转化处理;根据转化处理后的所述语法解析树查询所述kudu中存储的待查询数据。
上述装置内的各单元之间的信息交互、执行过程等内容,由于与本发明方法实施例基于同一构思,具体内容可参见本发明方法实施例中的叙述,此处不再赘述。
本发明实施例提供了一种可读介质,包括执行指令,当存储控制器的处理器执行所述执行指令时,所述存储控制器执行权利要求1至3中任一项所述的方法。
本发明实施例提供了一种存储控制器,包括:处理器、存储器和总线;
所述处理器和所述存储器通过所述总线连接;
所述存储器,当所述存储控制器运行时,所述处理器执行所述存储器存储的所述执行指令,以使所述存储控制器执行权利要求1至3中任一项所述的方法。
综上所述,本发明各个实施例至少具有如下有益效果:
1、本发明一实施例中,仅需要接收对应待查询数据的sql语句,则可对接收的sql语句进行解析以得到至少一个当前关键词,同时得到各个当前关键词所分别对应的变量值,后续则可根据各个当前关键词以及各个当前关键词所分别对应的变量值构建出可以被kudu所识别的语法解析树,进而根据构建的语法解析树查询kudu中存储的待查询数据。从而实现通过sql语句查询kudu中存储的数据。
2、本发明一实施例中,通过将各个指定关键词作为样本关键词存储在关键词对照列表中,比如查询类型、表格名称、字段名称等指定关键词均可作为样本关键词存储在关键词对照列表中,在针对接收的sql语句进行解析时,则可根据关键词对照列表准确读取sql语句中携带的各个当前关键词,以及各个当前关键词所分别对应的变量值。
3、本发明一个实施例中,通过检验至少一个当前关键词是否与关键词对照列表中存储的各个样本关键词一一对应,以及各个当前关键词是否分别对应的变量值是否为空来实现判断接收的sql语句的语法是否合格,当且仅当在判断出接收的sql语句的语法合格时,才根据各个当前关键词以及各个当前关键词所分别对应的变量值构建可以被kudu所识别的语法解析树,防止用户输入的sql语句因语法错误而形成错误的语法解析树,最终导致不能从kudu中准确查询到相应的待查询数据。相应的,当判断出接收的sql语句语法不合格时,则可生成相应的错误提示信息,使得用户根据错误提示信息输入更为正确的sql语句。
需要说明的是,在本文中,诸如第一和第二之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个······”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同因素。
最后需要说明的是:以上所述仅为本发明的较佳实施例,仅用于说明本发明的技术方案,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所做的任何修改、等同替换、改进等,均包含在本发明的保护范围内。