1 .一种openGauss访问ORC数据的方法,其特征在于,所述方法包括:
步骤S1:通过Kafka将处理完成的数据存储至HDFS;
步骤S2 :HDFS将步骤S1中的数据转化为ORC文件 ,同步生成与所述ORC文件对应的
cumeta元数据文件;
步骤S3:根据步骤S2生成的cumeta元数据文件在openGauss数据库创建对应的ORC外部
列存表;
步骤S4:扫描步骤S3创建的ORC外部列存表,将ORC外部列存表对应的存储路径下待扫
描的ORC文件数据转化为CU格式数据。
2.根据权利要求1所述的openGauss访问ORC数据的方法,其特征在于,步骤S2中,同步
生成与所述ORC文件对应的cumeta元数据文件,包括:
步骤S21:在writerImpl类中调用init函数打开HDFS中已有对应的cumeta元数据文件,
当HDFS中不存在对应的cumeta元数据文件时,创建并打开所述对应的cumeta元数据文件;
步骤S22:获取ORC文件的strip元数据信息,将获取的strip元数据信息写入cumeta元
数据文件;
步骤S23:在完成所述ORC文件中所有strip元数据信息的写入时,调用writerfooter函
数关闭ORC文件和cumeta元数据文件。
3 .根据权利要求1所述的openGauss访问ORC数据的方法,其特征在于,步骤S3包括:在
openGauss数据库内部扩展现有创建内部表的语法,采用扩展的创建内部表的语法对ORC外
部列存表进行创建,获得ORC外部列存表。
4 .根据权利要求3所述的openGauss访问ORC数据的方法,其特征在于,步骤S3中,在
openGauss数据库内部扩展现有创建内部表的语法,包括:
将表的标识项orientation的值设置为ORC;
新增用于定位ORC文件位置的location选项,将location选项的值设置为ORC外部表存
储路径。
5 .根据权利要求3所述的openGauss访问ORC数据的方法,其特征在于,步骤S3中,采用
扩展的创建内部表的语法对ORC外部列存表进行创建,包括:
判断标识项orientation的值是否为ORC,当标识项orientation的值为ORC时,根据
location选项的值访问cumeta元数据文件,读取cumeta元数据的每一行,对读取的每一行
cumeta元数据进行合法性校验,将通过合法性校验的每一行cumeta元数据转化为CUDesc元
数据信息后插入CUDesc表中,所述CUDesc元数据信息包括ORC文件的全路径、数据块所在
strip的strip ID以及数据块ID。
6 .根据权利要求1所述的openGauss访问ORC数据的方法,其特征在于,步骤S4包括:
步骤S41:openGauss数据库在加载列存表时根据调用方访问需求加载CUDesc表;
步骤S42:根据CUDesc元数据信息中数据块所在strip的strip ID判断加载的列存表是
否为ORC外部列存表;
步骤S43:根据CUDesc表中CUDesc元数据信息从ORC外部列存表对应的存储路径下获取
待扫描的ORC文件的及待扫描数据块在ORC文件中的具体位置信息;
步骤S44:根据待扫描的ORC文件以及待扫描数据块在ORC文件中的具体位置信息,获取
待扫描的ORC文件中的数据块;
权 利 要 求 书
1/2 页
2
评论