CN109284302B - 数据处理方法及装置 - Google Patents
数据处理方法及装置 Download PDFInfo
- Publication number
- CN109284302B CN109284302B CN201810909092.3A CN201810909092A CN109284302B CN 109284302 B CN109284302 B CN 109284302B CN 201810909092 A CN201810909092 A CN 201810909092A CN 109284302 B CN109284302 B CN 109284302B
- Authority
- CN
- China
- Prior art keywords
- encryption
- plan tree
- rdd
- data
- decryption
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5061—Partitioning or combining of resources
- G06F9/5066—Algorithms for mapping a plurality of inter-dependent sub-tasks onto a plurality of physical CPUs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6227—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database where protection concerns the structure of data, e.g. records, types, queries
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本公开涉及一种数据处理方法及装置,所述方法应用于Spark中的驱动器,所述方法包括:接收到插入SQL语句时,对所述插入SQL语句进行解析,生成插入逻辑计划树;若所述插入逻辑计划树与加密规则匹配,则创建加密节点,并将所述加密节点插入到所述插入逻辑计划树的插入节点之前,得到加密逻辑计划树;将所述加密逻辑计划树转换为加密物理计划树,并将所述加密物理计划树发送至Spark中的执行器。通过在插入数据前对数据进行加密,根据本公开实施例的数据处理方法及装置能够在SparkSQL中实现数据加密功能。
Description
技术领域
本公开涉及大数据技术领域,尤其涉及一种数据处理方法及装置。
背景技术
Spark是基于内存的分布式计算框架。Spark提供一站式数据分析能力,包括小批量流式处理、离线批处理、SQL(Structured Query Language,结构化查询语言)查询、数据挖掘等,用户可以在同一个应用中无缝结合使用这些能力。Spark提高了在大数据环境下数据处理的实时性,同时保证了高容错性和高可伸缩性,允许用户将Spark部署在大量廉价硬件之上,形成集群。
SparkSQL是一种基于Spark的分布式SQL引擎,是一个用来处理结构化数据的Spark组件,支持SQL语句,使得用户能够以SQL的方式快速方便的运行Spark计算任务。
相关技术中,SparkSQL不具有对数据进行加密的功能,这样用户在使用Spark API或者Spark SQL操作数据时,无法保证敏感数据(例如联系方式、密码等信息)的安全性,当数据文件泄露时,用户敏感信息就会被泄露,降低了信息的安全性。
发明内容
有鉴于此,本公开提出了一种数据处理方法及装置,能够在SparkSQL中实现数据加密功能。
根据本公开的第一方面,提供了一种数据处理方法,所述方法应用于Spark中的驱动器,所述方法包括:接收到插入SQL语句时,对所述插入SQL语句进行解析,生成插入逻辑计划树;若所述插入逻辑计划树与加密规则匹配,则创建加密节点,并将所述加密节点插入到所述插入逻辑计划树的插入节点之前,得到加密逻辑计划树;将所述加密逻辑计划树转换为加密物理计划树,并将所述加密物理计划树发送至Spark中的执行器。
根据本公开的第二方面,提供了一种数据处理方法,所述方法应用于执行器,所述方法包括:接收到加密物理计划树时,通过RDD创建算子获取待插入数据,并将所述待插入数据加载为第一RDD;通过map算子将所述第一RDD的各行数据分割成列;通过加密算子,对分割后的第一RDD中待加密的列进行加密,得到加密的第一RDD;通过行动算子将所述加密的第一RDD存储在插入表中。
根据本公开的第三方面,提供了一种数据处理装置,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述处理器执行所述机器可执行指令以实现上述第一方面的方法。
根据本公开的第四方面,提供了一种数据处理装置,包括:处理器和机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述处理器执行所述机器可执行指令以实现上述第二方面的方法。
在本公开实施例中,接收到插入SQL语句时,对插入SQL语句进行解析,生成插入逻辑计划树;当所述插入逻辑计划树与加密规则匹配时,创建加密节点,并将所述加密节点插入到所述插入逻辑计划树的插入节点之前,这样,能够在插入数据前对数据进行加密,从而在SparkSQL中实现数据加密功能。
根据下面参考附图对示例性实施例的详细说明,本公开的其它特征及方面将变得清楚。
附图说明
包含在说明书中并且构成说明书的一部分的附图与说明书一起示出了本公开的示例性实施例、特征和方面,并且用于解释本公开的原理。
图1示出根据本公开一实施例的数据处理方法的流程图。
图2示出了一种Spark的架构示意图。
图3示出SQL语句处理过程的一个示意图。
图4a示出一个示例性的插入逻辑计划树的示意图。
图4b示出一个示例性的加密逻辑计划树的示意图。
图4c示出一个示例性的查询逻辑计划树的示意图。
图4d示出一个示例性的解密逻辑计划树的示意图。
图5示出根据本公开一实施例的数据处理方法的流程图。
图6示出根据本公开一实施例的数据处理方法的流程图。
图7示出根据本公开一实施例的数据处理方法的一个示例性的内部数据处理示意图。
图8示出根据本公开一实施例的数据处理方法的流程图。
图9是根据一示例性实施例示出的一种驱动器的框图。
图10是根据一示例性实施例示出的一种执行器的框图。
具体实施方式
以下将参考附图详细说明本公开的各种示例性实施例、特征和方面。附图中相同的附图标记表示功能相同或相似的元件。尽管在附图中示出了实施例的各种方面,但是除非特别指出,不必按比例绘制附图。
在这里专用的词“示例性”意为“用作例子、实施例或说明性”。这里作为“示例性”所说明的任何实施例不必解释为优于或好于其它实施例。
另外,为了更好的说明本公开,在下文的具体实施方式中给出了众多的具体细节。本领域技术人员应当理解,没有某些具体细节,本公开同样可以实施。在一些实例中,对于本领域技术人员熟知的方法、手段、元件和电路未作详细描述,以便于凸显本公开的主旨。
图1示出根据本公开一实施例的数据处理方法的流程图。图2示出了一种Spark的架构示意图。如图2所示,Spark架构中包括Driver(驱动器)、Cluster Manager(集群管理器)和Worker Node(工作节点)。其中,驱动器负责对应用程序进行调度、对task(任务)分配等进行管理,SparkContext是整个分布式程序运行的起点。集群管理器负责工作节点资源的分配和管理。工作节点负责创建Executor(执行器),将资源和任务进一步分配给执行器,并同步资源信息给集群管理器。其中,执行器是工作节点上的进程,负责对分配给该进程的任务进行处理。
图1所示的数据处理方法可以应用于图2所示的Spark中的驱动器。如图1所示,该数据处理方法可包括步骤S11至步骤S31,用于实现数据的加密处理:
步骤S11,接收到插入SQL语句时,对所述插入SQL语句进行解析,生成插入逻辑计划树。
SQL指结构化查询语言,是一种数据库查询和程序设计语言,用于访问数据库系统。对数据库的访问操作可以包括:插入、查询、更新和和删除等,SQL语句可以用来实现上述访问操作。SQL语句是一种描述性的语言,指明了访问任务,驱动器需要根据SQL语句生成逻辑计划树,该逻辑计划树表明了如何完成所述访问任务,执行器执行该逻辑计划树对应的物理计划树,从而实现访问任务。
图3示出SQL语句处理过程的一个示意图。如图3所示,SparkSQL对SQL语句的处理过程中,驱动器首先对SQL语句进行解析(包括词法解析和语法解析),形成一棵逻辑计划树,在后续的如分析、优化等处理过程中对该逻辑计划树进行操作。操作的方法是采用规则(rule)对逻辑计划树进行匹配,从而对逻辑计划树中不同类型的节点采用不同的操作,例如对查询(select)节点、过滤(filter)节点、连接(join)节点等节点采用不同的操作。整个SQL语句的处理过程中逻辑计划树和规则相互配合,完成了解析、分析和优化等过程,最终生成可执行的物理计划树,即Spark的执行任务。驱动器可以将该物理计划树发送至执行器运行,生成SQL运算结果。其中,对于规则匹配是通过规则执行器(RuleExecutor)完成的。
逻辑计划树的每个节点都是一个逻辑计划,对应于一个SQL操作,各节点中保存了各对应SQL操作的详细信息,例如过滤器(Filter)节点就是一个典型的逻辑计划,该节点对应于过滤操作,该节点中保存了过滤条件(condition)以及子逻辑计划。
插入SQL语句可以用于向数据表中插入数据,插入SQL语句可以为insert into语句。驱动器接收到插入SQL语句时,首先对插入SQL语句进行解析,生成插入逻辑计划树,之后对该插入逻辑计划树采用规则进行匹配。本公开实施例中的插入逻辑计划树与相关技术中解析插入SQL语句后得到的插入逻辑计划树相同,这里不再赘述。
步骤S12,若所述插入逻辑计划树与加密规则匹配,则创建加密节点,并将所述加密节点插入到所述插入逻辑计划树的插入节点之前,得到加密逻辑计划树。
在本公开实施例中,定义一个继承自Rule的加密规则,该加密规则可以添加在图3所示的分析器的规则列表中,在对插入SQL语句的插入逻辑计划树进行分析时,如果插入逻辑计划树与该加密规则匹配,则将插入逻辑计划树按照加密规则的定义进行转换,从而生成加密逻辑计划树。
在一种可能的实现方式中,驱动器在对插入SQL语句进行解析时,可以从插入SQL语句中获取插入表的标识;若所述插入表的标识对应的数据表的属性中包括加密类型信息和加密列信息,则驱动器可以确定通过对所述插入SQL语句进行解析生成的插入逻辑计划树与所述加密规则匹配。
在一种可能的实现方式中,在需要对某个数据表中的数据进行加密的情况下,在SparkSQL中创建该数据表时可以指定要加密的列以及选用的加密算法,并将加密列信息(用于指示要加密的列)和加密类型信息(用于指示加密算法)保存在该数据表的属性中。这样,当一个数据表的属性中包括加密类型信息和加密列信息,可以表明该数据表为加密表,向该数据表中插入数据时需要对数据进行加密。
本公开实施例中采用的加密算法可以根据需求进行设置。由于涉及到加密和解密两个过程,因此本公开实施例中采用的加密算法可以为双向加密算法,例如AES(AdvancedEncryption Standard,高级加密标准)、DES(Data Encryption Standard,数据加密标准)等对称加密算法,或者RSA、ECC(Elliptic curve cryptography,椭圆曲线密码学)等非对称加密算法。需要注意的是,解密过程需要采用与加密过程同样的加密算法,且密钥需要保持一致,才能将加密数据解密为明文。
当插入逻辑计划树与加密规则匹配时,驱动器可以将插入逻辑计划树按照加密规则的定义进行转换,具体包括:创建加密节点,并将所述加密节点插入到所述插入逻辑计划树的插入节点之前,得到加密逻辑计划树。
其中,加密节点可以用于对数据进行加密。加密节点同样是一个逻辑计划,该逻辑计划可以继承SparkSQL的逻辑计划接口。
在一种可能的实现方式中,驱动器可以在创建所述加密节点时,将所述加密类型信息和加密列信息作为类属性保存在所述加密节点中。这样,执行器在执行该加密逻辑计划树对应的加密物理计划树时,可以从加密物理计划树中获取加密类型信息和加密列信息,从而完成数据的加密。
插入节点可以用于将数据插入到插入表中。驱动器将加密节点插入到插入节点之前,可以实现先对数据进行加密,再将加密后的数据插入到插入表中。
步骤S13,将所述加密逻辑计划树转换为加密物理计划树,并将所述加密物理计划树发送至Spark中的执行器。
在本公开实施例中,接收到插入SQL语句时,对插入SQL语句进行解析,生成插入逻辑计划树;当所述插入逻辑计划树与加密规则匹配时,创建加密节点,并将所述加密节点插入到所述插入逻辑计划树的插入节点之前,这样,能够在插入数据前对数据进行加密,从而在SparkSQL中实现数据加密功能。
在一种可能的实现方式中,若所述插入逻辑计划树与加密规则不匹配,即插入表的标识对应的数据表的属性中不包括加密类型信息和加密列信息,则将所述插入逻辑计划树转化为插入物理计划树,并将所述插入物理计划树发送至执行器执行。
以insert into语句为例进行说明。图4a示出一个示例性的插入逻辑计划树的示意图。图4b示出一个示例性的加密逻辑计划树的示意图。
如图4a所示,该inset into语句用于将t2数据表中id为123的行中id列,name列和password列的数据插入到jmb数据表(即插入表为jmb数据表)中。插入逻辑计划树包括表扫描节点、过滤器节点、投影节点和插入节点。其中,表扫描节点用于获取t2数据表的所有数据;过滤器节点用于从表扫描节点获取的数据中,筛选出id列为123的行;投影节点用于从过滤器节点筛选出的行中获取id列、name列和password列的数据,插入节点用于将投影节点获取到的数据插入到jmb数据表中。图4b中,表扫描节点、过滤节点和投影节点可以参照图4a,这里不再赘述。
当jmb数据表不是加密表时,即jmb数据表属性中不包括加密类型信息和加密列信息时,图4a所示的插入逻辑计划树与加密规则不匹配,驱动器可以将该插入逻辑计划树转换为插入物理计划树,并将所述插入物理计划树发送至执行器执行。
当jmb数据表时加密表时,即jmb数据表属性中包括加密类型信息和加密列信息时,图4a所示的插入逻辑计划树与加密规则匹配,驱动器可以创建加密节点、将jmb数据表属性中的加密类型信息和加密列信息作为类属性保存在所述加密节点中,并将该加密节点插入到插入逻辑计划树的插入节点(如图4a所示)之前,得到图4b所示的加密逻辑计划树。其中,图4b所示的加密节点用于对投影节点获取的数据中password列的数据采用AES算法进行加密,插入节点用于将加密后的数据插入到jmb数据表中。
图5示出根据本公开一实施例的数据处理方法的流程图。如图5所示,该数据处理方法还可包括步骤S21至步骤S23,用于实现数据的解密处理:
步骤S21,接收到查询SQL语句时,对所述查询SQL语句进行解析,生成查询逻辑计划树。
查询SQL语句可以用于从数据表中读取数据,查询SQL语句可以为select语句。驱动器接收到查询SQL语句时,首先对查询SQL语句进行解析,生成查询逻辑计划树,之后对该查询逻辑计划树采用规则进行匹配。本公开实施例中的查询逻辑计划树与相关技术中解析查询SQL语句后得到的查询逻辑计划树形同,这里不再赘述。
步骤S22,若所述查询逻辑计划树与解密规则匹配,则创建解密节点,并将所述解密节点插入到所述查询逻辑计划树的投影节点之前,得到解密逻辑计划树。
参照加密规则,在本公开实施例中,定义一个继承自Rule的解密规则,该解密规则可以添加在图3所示的分析器的规则列表中,当查询逻辑计划树与该解密规则匹配时,可以将查询逻辑计划树按照解密规则的定义进行转化,从而生成解密逻辑计划树。
当一个数据表的属性中包括加密类型信息和加密列信息,可以表明该数据表为加密表,从该数据表中读取数据时需要对数据进行解密。在一种可能的实现方式中,驱动器在对所述查询SQL语句进行解析时,从所述查询SQL语句中获取查询表的标识;若所述查询表的标识对应的数据表的属性中包括加密类型信息和加密列信息,则确定所述查询逻辑计划树与所述解密规则匹配。
当查询逻辑计划树与解密规则匹配时,驱动器可以将查询逻辑计划树按照解密规则的定义进行转化,具体包括:创建解密节点,并将所述解密节点插入到所述查询逻辑计划树的投影节点之前,得到解密逻辑计划树。
其中,解密节点可以用于对数据进行解密。解密节点同样是一个逻辑计划,该逻辑计划可以继承SparkSQL的逻辑计划接口。
在一种可能的实现方式中,驱动器在创建所述解密节点时,将所述加密类型信息和加密列信息,作为类属性保存在所述解密节点中。这样,执行器在执行该解密逻辑计划树对应的解密物理计划树中,可以从解密物理计划树中获取加密类型信息和加密列信息,从而完成数据的解密。
投影节点用于获取符合条件的列中的数据。驱动器将解密节点插入到投影节点之前,可以实现先对加密列中的数据进行解密,再获取解密后的数据。
步骤S23,将所述解密逻辑计划树转换为解密物理计划树,并将所述解密物理计划树发送至Spark中的执行器。
在本公开实施例中,接收到查询SQL语句时,对查询SQL语句进行解析,生成查询逻辑计划树;当所述查询逻辑计划树与解密规则匹配时,创建解密节点,并将所述解密节点插入到所述查询逻辑计划树的投影节点之前,这样,能够在返回数据前对数据进行解密,从而在SparkSQL中实现数据解密功能。
在一种可能的实现方式中,若所述查询逻辑计划树与解密规则不匹配,即查询表的标识对应的数据表的属性中不包括加密类型信息和加密列信息,则将所述查询逻辑计划树转化为查询物理计划树,并将所述查询物理计划树发送至执行器执行。
以select语句为例进行说明。图4c示出一个示例性的查询逻辑计划树的示意图。图4d示出一个示例性的解密逻辑计划树的示意图。图4c中表扫描节点、过滤器节点和投影节点可以参照图4a,这里不再赘述。图4d中表扫描节点和滤器节点可以参照图4a,这里不再赘述。其中,t2数据表为查询表。
当t2数据表不是加密表时,即t2数据表属性中不包括加密类型信息和加密列信息时,图4c所示的查询逻辑计划树与解密规则不匹配,驱动器可以将该查询逻辑计划树转换为查询物理计划树,并将所述查询物理计划树发送至执行器。
当t2数据表是加密表时,即t2数据表属性中包括加密类型信息和加密列信息时,图4c所示的查询逻辑计划树与解密规则匹配,驱动器可以创建解密节点、将t2数据表属性中的加密类型信息和加密列信息作为类属性保存在所述解密节点中,并将该解密节点插入到所述查询逻辑计划树的投影节点(如图4c所示)之前,得到图4d所示的解密逻辑计划树。其中,图4d的解密节点用于对过滤节点筛选出的数据中password列的数据采用AES等算法进行解密,投影节点用于从解密节点解密后的数据中获取id列、name列和password列的数据。
图6示出根据本公开一实施例的数据处理方法的流程图。该数据处理方法可以应用于图2所示的Spark中的执行器。如图6所示,该数据处理方法可包括步骤S31至步骤S34,用于实现数据的加密处理。
步骤S31,接收到加密物理计划树时,通过RDD创建算子获取待插入数据,并将所述待插入数据加载为第一RDD。
步骤S32,通过map算子将所述第一RDD的各行数据分割成列。
步骤S33,通过加密算子,对分割后的第一RDD中待加密的列进行加密,得到加密的第一RDD。
步骤S34,通过行动算子将所述加密的第一RDD存储在插入表中。
RDD(Redilient Distributed Dataset,弹性分布数据集)是对分布式存储的抽象,它表示已被分区、不可改变的并能够被并行操作的数据集合,可全部或部分缓存在内存中,不同的数据集格式对应不同的RDD实现。
Spark任务的计算底层是以RDD的转换操作来实现的,比如过滤、连接或者分组等,并由行动操作提交执行。其中,转换操作的返回值还是一个RDD,转换操作是惰性(lazy)的,也就说从一个RDD转换生成另一个RDD的操作不是马上执行的,Spark在遇到转换操作时只会记录需要这样的操作,并不会去执行,需要等到有执行操作的时候才会真正启动计算过程进行计算。行动操作会返回结果或者把RDD数据写到HDFS中。行动操作是触发Spark启动计算的动因。RDD的转换操作和行动操作在Spark任务计算过程中可以分别称为转换算子和行动算子。
在本公开实施例中,在Spark中对数据进行加密和解密同样可以定义为RDD的一类转换算子,RDD通过加密或者解密算子,可以生成加密后的RDD或者解密后的RDD。由于加密物理计划树中增加了加密节点,因此执行过程中会增加加密算子,通过该加密算子可以完成加密的计算过程。
物理计划树由算子组成,物理计划树的各算子与逻辑计划树的节点对应。根据步骤S13可知,加密物理计划树是由加密逻辑计划树转换得到的,因此加密物理计划树的算子与加密逻辑计划树的节点对应。如图4b所示,加密逻辑计划树包括表扫描节点、过滤器节点、投影节点、加密节点和插入节点。加密逻辑计划树的表扫描节点、过滤器节点和投影节点用于获取待插入数据,对应于加密物理计划树中的RDD创建算子和map算子。加密逻辑计划树的加密节点用于对数据进行加密,对应于加密物理计划树中的加密算子。加密逻辑计划树中的插入节点用于将加密后的数据插入至插入表中,对应于加密物理计划树中的执行算子。
执行器接收到加密物理计划树,表明插入表为加密表,待插入数据需要先进行加密再插入到插入表中。在本公开实施例中,可以先通过加密算子实现待插入数据的加密,再通过行动算子实现加密数据的插入。
执行器接收到加密物理计划树时,可以通过RDD创建算子获取待插入的数据并将待插入的数据加载为第一RDD。其中,待插入的数据可以是以文本格式存储在HDFS(HadoopDistributed File System,分布式文件系统)中的数据,也可以是通过查询SQL语句获得的数据。RDD创建算子可以为textFile算子,该算子可以从HDFS读取数据并将读取的数据加载为RDD。RDD创建算子还可以为parallelize算子或者makRDD算子,该算子可以在驱动器中读取数据并将读取的数据加载为RDD。之后,执行器可以通过map算子将待插入数据的每一行数据分割成列,即将每一行变成一个数组,例如将123,张三,admin@123的这行数据,分割成分别对应于id列、name列和password列的三组数据:123、zhangsan和admin@123。执行器可以通过加密算子,对分割后的第一RDD中待加密的列进行加密,得到加密的第一RDD,并通过行动算子将加密的第一RDD存储在插入表中。
举例来说,假设用户信息以文本格式存储在HDFS中,用户信息包括id、name和password三列,示例数据如表1所示。图7示出根据本公开一实施例的数据处理方法的一个示例性的内部数据处理示意图。如图7所示,执行器接收到加密物理计划树时,通过textFile算子(RDD创建算子)从HDFS中获取用户信息并将该用户信息加载为第一RDD,其中,用户信息为待插入数据。之后,执行器可以通过partition算子将第一RDD分割为多个部分(例如,将200行的第一RDD分割为两部分,第一部分包括第0行至第99行,第二部分包括第100行至199行),对各部分用户信息进行并行处理。以任意一部分为例进行说明。驱动器通过map算子将该部分的每一行数据分割为三列(包括id列、name列和password列),然后调用加密算子对各行的第三列(password列)进行加密。
表1
id | name | password |
12345 | zhangsan | Admin@123 |
11423 | lisi | Lisi_1234 |
…… | …… | …… |
在一种可能的实现方式中,步骤S33可包括:在所述加密算子中:获取加密类型信息和加密列信息;获取为所述插入表设置的加密密钥;根据加密类型信息和所述加密密钥,对分割后的第一RDD中加密列信息对应的列进行加密,得到加密的第一RDD。
由于加密节点的类属性中保存了加密列信息和加密类型信息,因此由加密节点转换而来的加密算子的类属性中也保存有加密列信息和加密类型信息。执行器可以从加密算子的类属性中获取加密列信息和加密类型信息。
在向加密表插入数据之前,可以在SparkSQL中执行set命令,设置表的加密密钥。在一个示例中,加密密钥可以表示为tablename.encrypt.dense,其中,tablename对应数据表,encrypt对应加密,dense对应密钥。
在一种可能的实现方式中,驱动器执行set命令后,该set命令对应的数据表可以增加一个属性,即密钥。驱动器可以从数据表的属性中获取该数据表的密钥。假设插入表为jmb数据表,且该jmb表为加密表,则执行器执行参数为jmb.encrypt.dense的set命令后,jmb数据表的属性中增加了加密密钥。在加密算子中,驱动器可以从jmb数据表的属性中获取jmb数据表的加密密钥。
在一种可能的实现方式中,当驱动器未获取到插入表的加密密钥时,可以提示设置加密密钥。
在SparkSQL中使用加密表时,设置对应的加密密钥,可以保证加密的动态性。
图8示出根据本公开一实施例的数据处理方法的流程图。如图8所示,该数据处理方法可包括步骤S41至步骤S44,用于实现数据的解密处理。
步骤S41,接收到解密物理计划树时,通过RDD创建算子从查询表中获取查询数据,并将所述查询数据加载为第二RDD。
步骤S42,通过map算子将所述第二RDD的各行数据分割成列。
步骤S43,通过解密算子,对分割后的第二RDD中待解密的列进行解密,得到解密的第二RDD。
步骤S44,通过行动算子返回所述解密的第二RDD。
执行器接收到解密物理计划树时,表明查询表为加密表,需查询数据需要先进行解密再进行返回。在本公开实施例中,可以通过解密算子实现查询数据的解密,再通过行动算子实现解密数据的返回。
由于解密物理计划树中增加了解密节点,因此执行过程中会增加解密算子,通过该解密算子可以完成解密的计算过程。
执行器接收到解密物理计划树时,可以通过创建RDD算子从查询表中获取查询数据,并将查询数据加载为第二RDD。之后,执行器可以通过map算子将查询数据的各行数据分割成列。由于查询表为加密表,因此查询数据中存在需要解密后才能使用的列(待解密的列)。此时,执行器可以通过解密算子,对分割后的第二RDD中待解密的列进行解密,得到解密的第二RDD,并通过行动算子返回解密的第二RDD。
在一种可能的实现方式中,步骤S43可包括:在所述解密算子中:获取加密类型信息和加密列信息;获取为所述查询表设置的解密密钥和加密密匙;当所述查询表的解密密钥和所述查询表的加密密钥一致时,根据所述查询表的加密类型信息和所述解密密钥,对分割后的第二RDD中待解密的列进行解密,得到解密的第二RDD。
由于解密节点的类属性中保存了加密列信息和加密类型信息,因此由解密节点转换而来的解密算子的类属性中也保存了加密列信息和加密类型信息。执行器可以从解密算子的类属性中获取加密列信息和加密类型信息。
在SparkSQL中执行set命令,可以动态设置数据表的解密密钥。在一个示例中,解密密钥可以表示为tablename。Decode。dense,其中,tablename对应数据表,decode对应解密,dense对应密钥。
假设查询表为t2数据表,且该t2数据表为加密表。执行器执行参数为t2.encrypt.dense的set明后,t2数据表的属性中增加了加密密钥;驱动器执行参数为t2.decode.dense的set命令后,t2数据表的属性中增加了解密密钥。驱动器可以从t2数据表的属性中获取t2数据表的加密密钥和解密密钥。
在一种可能的实现方式中,执行器可以确定查询表的加密密钥和解密密钥是否一致,当加密密钥和解密密钥一致时进行解密;当加密密钥和解密密钥不一致时,或者未获取到解密密钥时,以加密的形式返回数据。
在SparkSQL中使用加密表时,设置对应的解密密钥,可以保证解密的动态性。
需要说明的是,在本公开实施例中,加密密钥和解密密钥时Session级别有效的,在不同SparkSQL的Session中,各密钥不会相互影响,从而进一步提高数据的安全性。
本公开一实施例提供一种驱动器,该驱动器用于:
接收到插入SQL语句时,对所述插入SQL语句进行解析,生成插入逻辑计划树;
若所述插入逻辑计划树与加密规则匹配,则创建加密节点,并将所述加密节点插入到所述插入逻辑计划树的插入节点之前,得到加密逻辑计划树;
将所述加密逻辑计划树转换为加密物理计划树,并将所述加密物理计划树发送至Spark中的执行器52。
在一种可能的实现方式中,所述驱动器还用于:
对所述插入SQL语句进行解析时,从所述插入SQL语句中获取插入表的标识;
若所述插入表的标识对应的数据表的属性中包括加密类型信息和加密列信息,则确定所述插入逻辑计划树与所述加密规则匹配。
在一种可能的实现方式中,所述驱动器还用于:
在创建所述加密节点时,将所述加密类型信息和加密列信息作为类属性保存在所述加密节点中。
在一种可能的实现方式中,所述驱动器还用于:
接收到查询SQL语句时,对所述查询SQL语句进行解析,生成查询逻辑计划树;
若所述查询逻辑计划树与解密规则匹配,则创建解密节点,并将所述解密节点插入到所述查询逻辑计划树的投影节点之前,得到解密逻辑计划树;
将所述解密逻辑计划树转换为解密物理计划树,并将所述解密物理计划树发送至Spark中的执行器。
在一种可能的实现方式中,所述驱动器还用于:
在对所述查询SQL语句进行解析时,从所述查询SQL语句中获取查询表的标识;
若所述查询表的标识对应的数据表的属性中包括加密类型信息和加密列信息,则确定所述查询逻辑计划树与所述解密规则匹配。
在一种可能的实现方式中,所述驱动器还用于:
在创建所述解密节点时,将所述加密类型信息和加密列信息,作为类属性保存在所述解密节点中。
本公开一实施例提供一种执行器,该执行器用于:
接收到加密物理计划树时,通过RDD创建算子获取待插入数据,并将所述待插入数据加载为第一RDD;
通过map算子将所述第一RDD的各行数据分割成列;
通过加密算子,对分割后的第一RDD中待加密的列进行加密,得到加密的第一RDD;
通过行动算子将所述加密的第一RDD存储在插入表中。
在一种可能的实现方式中,所述执行器具体用于:
获取所述插入表的加密类型信息和加密列信息;
获取为所述插入表设置的加密密钥;
根据所述插入表的加密类型信息和所述加密密钥,对分割后的第一RDD中待加密的列进行加密,得到加密的第一RDD。
在一种可能的实现方式中,所述执行器还用于:
接收到解密物理计划树时,通过RDD创建算子从查询表中获取查询数据,并将所述查询数据加载为第二RDD;
通过map算子将所述第二RDD的各行数据分割成列;
通过解密算子,对分割后的第二RDD中待解密的列进行解密,得到解密的第二RDD;
通过行动算子返回所述解密的第二RDD。
在一种可能的实现方式中,所述执行器具体用于:
获取所述查询表的加密类型信息和加密列信息;
获取为所述查询表设置的解密密钥和加密密匙;
当所述查询表的解密密钥和所述查询表的加密密钥一致时,根据所述查询表的加密类型信息和所述解密密钥,对分割后的第二RDD中待解密的列进行解密,得到解密的第二RDD。
图9是根据一示例性实施例示出的一种驱动器800的框图。参照图9,该驱动器800可包括处理器801、存储有机器可执行指令的机器可读存储介质802。处理器801与机器可读存储介质802可经由系统总线803通信。并且,处理器801通过读取机器可读存储介质802中与数据加密逻辑对应的机器可执行指令以执行上文所述的数据处理方法。
本文中提到的机器可读存储介质802可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
图10是根据一示例性实施例示出的一种执行器900的框图。参照图10,该执行器900可包括处理器901、存储有机器可执行指令的机器可读存储介质902。处理器901与机器可读存储介质902可经由系统总线903通信。并且,处理器901通过读取机器可读存储介质902中与数据加密逻辑对应的机器可执行指令以执行上文所述的数据处理方法。
本文中提到的机器可读存储介质902可以是任何电子、磁性、光学或其它物理存储装置,可以包含或存储信息,如可执行指令、数据,等等。例如,机器可读存储介质可以是:RAM(Radom Access Memory,随机存取存储器)、易失存储器、非易失性存储器、闪存、存储驱动器(如硬盘驱动器)、固态硬盘、任何类型的存储盘(如光盘、dvd等),或者类似的存储介质,或者它们的组合。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (12)
1.一种数据处理方法,其特征在于,所述方法应用于Spark中的驱动器,所述方法包括:
接收到插入SQL语句时,对所述插入SQL语句进行解析,生成插入逻辑计划树;
若所述插入逻辑计划树与加密规则匹配,则创建加密节点,并将所述加密节点插入到所述插入逻辑计划树的插入节点之前,得到加密逻辑计划树;
将所述加密逻辑计划树转换为加密物理计划树,并将所述加密物理计划树发送至Spark中的执行器。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
对所述插入SQL语句进行解析时,从所述插入SQL语句中获取插入表的标识;
若所述插入表的标识对应的数据表的属性中包括加密类型信息和加密列信息,则确定所述插入逻辑计划树与所述加密规则匹配。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在创建所述加密节点时,将所述加密类型信息和加密列信息作为类属性保存在所述加密节点中。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收到查询SQL语句时,对所述查询SQL语句进行解析,生成查询逻辑计划树;
若所述查询逻辑计划树与解密规则匹配,则创建解密节点,并将所述解密节点插入到所述查询逻辑计划树的投影节点之前,得到解密逻辑计划树;
将所述解密逻辑计划树转换为解密物理计划树,并将所述解密物理计划树发送至Spark中的执行器。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
在对所述查询SQL语句进行解析时,从所述查询SQL语句中获取查询表的标识;
若所述查询表的标识对应的数据表的属性中包括加密类型信息和加密列信息,则确定所述查询逻辑计划树与所述解密规则匹配。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在创建所述解密节点时,将所述加密类型信息和加密列信息,作为类属性保存在所述解密节点中。
7.一种数据处理方法,其特征在于,所述方法应用于执行器,所述方法包括:
接收到加密物理计划树时,通过RDD创建算子获取待插入数据,并将所述待插入数据加载为第一RDD;
通过map算子将所述第一RDD的各行数据分割成列;
通过加密算子,对分割后的第一RDD中待加密的列进行加密,得到加密的第一RDD;
通过行动算子将所述加密的第一RDD存储在插入表中。
8.根据权利要求7所述的方法,其特征在于,所述通过加密算子,对分割后的第一RDD中待加密的列进行加密,得到加密的第一RDD包括:
获取所述插入表的加密类型信息和加密列信息;
获取为所述插入表设置的加密密钥;
根据所述插入表的加密类型信息和所述加密密钥,对分割后的第一RDD中待加密的列进行加密,得到加密的第一RDD。
9.根据权利要求7所述的方法,其特征在于,所述方法还包括:
接收到解密物理计划树时,通过RDD创建算子从查询表中获取查询数据,并将所述查询数据加载为第二RDD;
通过map算子将所述第二RDD的各行数据分割成列;
通过解密算子,对分割后的第二RDD中待解密的列进行解密,得到解密的第二RDD;
通过行动算子返回所述解密的第二RDD。
10.根据权利要求9所述的方法,其特征在于,通过解密算子,对分割后的第二RDD中待解密的列进行解密,得到解密的第二RDD包括:
获取所述查询表的加密类型信息和加密列信息;
获取为所述查询表设置的解密密钥和加密密匙;
当所述查询表的解密密钥和所述查询表的加密密钥一致时,根据所述查询表的加密类型信息和所述解密密钥,对分割后的第二RDD中待解密的列进行解密,得到解密的第二RDD。
11.一种数据处理装置,其特征在于,包括:
处理器和机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求1至6中任意一项所述的方法。
12.一种数据处理装置,其特征在于,包括:
处理器和机器可读存储介质,所述机器可读存储介质存储有机器可执行指令,所述处理器执行所述机器可执行指令以实现权利要求7至10中任意一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810909092.3A CN109284302B (zh) | 2018-08-10 | 2018-08-10 | 数据处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810909092.3A CN109284302B (zh) | 2018-08-10 | 2018-08-10 | 数据处理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109284302A CN109284302A (zh) | 2019-01-29 |
CN109284302B true CN109284302B (zh) | 2020-12-01 |
Family
ID=65182748
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810909092.3A Active CN109284302B (zh) | 2018-08-10 | 2018-08-10 | 数据处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109284302B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110287208A (zh) * | 2019-05-27 | 2019-09-27 | 北京三快在线科技有限公司 | 数据库字段加密的方法和装置、存储介质 |
CN110968895B (zh) * | 2019-11-29 | 2022-04-05 | 北京百度网讯科技有限公司 | 一种数据的处理方法、装置、电子设备及存储介质 |
CN114756629B (zh) * | 2022-06-16 | 2022-10-21 | 之江实验室 | 基于sql的多源异构数据交互分析引擎及方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1761923A (zh) * | 2003-06-11 | 2006-04-19 | 甲骨文国际公司 | 加密数据库列的方法和设备 |
CN105631346A (zh) * | 2015-12-25 | 2016-06-01 | 深圳市华讯方舟软件技术有限公司 | 一种既安全又方便使用的Spark数据库电子密码锁及其操作方法 |
CN106254896A (zh) * | 2016-08-05 | 2016-12-21 | 中国传媒大学 | 一种针对实时视频的分布式加密方法 |
CN205901794U (zh) * | 2016-08-22 | 2017-01-18 | 成都比特信安科技有限公司 | 一种对大数据内容进行选择性加密的系统 |
CN107169033A (zh) * | 2017-04-17 | 2017-09-15 | 东北大学 | 基于数据模式转换和并行框架的关系数据查询优化方法 |
CN107943952A (zh) * | 2017-11-24 | 2018-04-20 | 北京赛思信安技术股份有限公司 | 一种基于Spark框架进行全文检索的实现方法 |
CN108197487A (zh) * | 2017-12-21 | 2018-06-22 | 南京数睿数据科技有限公司 | 一种提升海量数据安全性能的加密方法和系统 |
-
2018
- 2018-08-10 CN CN201810909092.3A patent/CN109284302B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1761923A (zh) * | 2003-06-11 | 2006-04-19 | 甲骨文国际公司 | 加密数据库列的方法和设备 |
CN105631346A (zh) * | 2015-12-25 | 2016-06-01 | 深圳市华讯方舟软件技术有限公司 | 一种既安全又方便使用的Spark数据库电子密码锁及其操作方法 |
CN106254896A (zh) * | 2016-08-05 | 2016-12-21 | 中国传媒大学 | 一种针对实时视频的分布式加密方法 |
CN205901794U (zh) * | 2016-08-22 | 2017-01-18 | 成都比特信安科技有限公司 | 一种对大数据内容进行选择性加密的系统 |
CN107169033A (zh) * | 2017-04-17 | 2017-09-15 | 东北大学 | 基于数据模式转换和并行框架的关系数据查询优化方法 |
CN107943952A (zh) * | 2017-11-24 | 2018-04-20 | 北京赛思信安技术股份有限公司 | 一种基于Spark框架进行全文检索的实现方法 |
CN108197487A (zh) * | 2017-12-21 | 2018-06-22 | 南京数睿数据科技有限公司 | 一种提升海量数据安全性能的加密方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN109284302A (zh) | 2019-01-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10853354B2 (en) | Method of generating globally verifiable unique identifiers using a scalable interlinked blockchain structure | |
Zhang et al. | A scalable two-phase top-down specialization approach for data anonymization using mapreduce on cloud | |
CN109284302B (zh) | 数据处理方法及装置 | |
US9069987B2 (en) | Secure data access using SQL query rewrites | |
US20090296926A1 (en) | Key management using derived keys | |
WO2016112861A1 (en) | System for high-throughput handling of transactions in data-partitioned, distributed, relational database management system | |
CN109347839B (zh) | 集中式密码管理方法、装置、电子设备及计算机存储介质 | |
US8769302B2 (en) | Encrypting data and characterization data that describes valid contents of a column | |
US9684689B2 (en) | Distributed parallel processing system having jobs processed by nodes based on authentication using unique identification of data | |
US20140095889A1 (en) | Encrypted search database device, encrypted search data adding/deleting method and adding/deleting program | |
KR102673882B1 (ko) | 데이터 암호화 방법 및 장치, 데이터 복호화 방법 및 장치 | |
Liu | Securing outsourced databases in the cloud | |
Kaci et al. | Toward a big data approach for indexing encrypted data in cloud computing | |
CN114925041A (zh) | 一种数据查询方法及装置 | |
CN117421771A (zh) | 一种面向结构化数据的可搜索加密方法、装置及电子设备 | |
US20180219675A1 (en) | Separate encryption for a solid-state drive | |
WO2020233086A1 (zh) | 区块处理方法、装置、计算机设备和存储介质 | |
Ahmad et al. | Parallel query execution over encrypted data in database-as-a-service (DaaS) | |
CN113204776B (zh) | 实现列加密的方法、装置、设备及存储介质 | |
CN111639349B (zh) | 一种数据加密处理方法、装置和存储介质 | |
CN111191261B (zh) | 一种大数据安全保护方法、系统、介质及设备 | |
CN114722118A (zh) | 数据同步方法和系统、计算机可读存储介质 | |
US10819508B2 (en) | Encrypted communication channels for distributed database systems | |
US11922239B1 (en) | System and method for abstraction of application programming interface creation without code | |
US11899811B2 (en) | Processing data pages under group-level encryption |
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 |