CN109376154B - 数据读取、写入方法及数据读取、写入系统 - Google Patents

数据读取、写入方法及数据读取、写入系统 Download PDF

Info

Publication number
CN109376154B
CN109376154B CN201811258580.9A CN201811258580A CN109376154B CN 109376154 B CN109376154 B CN 109376154B CN 201811258580 A CN201811258580 A CN 201811258580A CN 109376154 B CN109376154 B CN 109376154B
Authority
CN
China
Prior art keywords
class
hive
data
hadoop
data table
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
CN201811258580.9A
Other languages
English (en)
Other versions
CN109376154A (zh
Inventor
胡一帆
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.)
Hangzhou Daishu Technology Co ltd
Original Assignee
Hangzhou Daishu Technology 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 Hangzhou Daishu Technology Co ltd filed Critical Hangzhou Daishu Technology Co ltd
Priority to CN201811258580.9A priority Critical patent/CN109376154B/zh
Publication of CN109376154A publication Critical patent/CN109376154A/zh
Application granted granted Critical
Publication of CN109376154B publication Critical patent/CN109376154B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请提供了一种数据读取、写入方法及数据读取、写入系统,通过解析Hive数据表的详细信息,将Hive数据表的读写转换为HDFS文件系统上的文件读写,避免了基于JDBC读取Hive数据表可能出现的假死和写入速度慢的问题,本方法和系统直接在底层的HDFS文件系统上进行Hive数据表数据的读写,因而吞吐量高、稳定性强。

Description

数据读取、写入方法及数据读取、写入系统
技术领域
本发明属于数据技术数据处理领域,尤其涉及一种数据读取、写入方法及数据读取、写入系统
背景技术
Flink是一个面向分布式数据流处理和批量数据处理的开源计算平台,它主要由Java代码实现,具有吞吐量和低延迟的特性。通过实现Flink框架的InputFormat接口和OutputFormat接口,使得Flink平台可以从不同的数据源读写数据。Hive是一种基于Hadoop的一个数据仓库引擎,将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
为了使得Flink平台可以读取和写入Hive,一种常见的方式是使用Flink框架提供的JDBCInputFormat类和JDBCOutputFormat类,通过JDBC读取和写入Hive数据表。使用JDBC写入Hive数据的速度较慢,因为插入记录的请求会被转换成数量众多Map Reduce小任务,占用了大量的任务调度时间;使用JDBC读取Hive数据时,容易导致hive的JDBC服务器假死,使得连接到JDBC服务器的所有连接处于阻塞状态。JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序。hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。
图1为现有的Flink读写Hive的技术方案的数据流图。当使用JDBCInputFormat读取Hive数据表的数据到Flink平台时,通过JDBCOutputFormat向Hive JDBC Server发送SELECT语义的SQL语句,Hive JDBC Server将JDBCInputFormat发送过来的SELECT语义的SQL语句转换成Hadoop平台上的Map Reduce任务在Hadoop平台上执行,执行结果返回给Hive JDBC Server,再由Hive JDBC Server回传给Flink平台。当使用JDBCOutputFormat将Flink平台的数据写入Hive数据表时,通过JDBCOutputFormat向Hive JDBC Server发送INSERT语义的SQL语句,Hive JDBC Server将JDBCInputFormat发送过来的INSERT语义的SQL语句转换成Hadoop平台上的Map Reduce任务在Hadoop平台上执行。
发明内容
本发明提供了一种能够方便的读取和写入HDBC的数据读取、写入方法及数据读取、写入系统。
数据读取方法,包括如下步骤:
S1:定义Hive数据读取类,该Hive数据读取类用以实现输入FLINK接口;
S2:通过Hive的JDBC连接字符串获取Hive的数据库连接实例;新建JobConf对象,其中JobConf为Hadoop框架提供的Map Reduce作业的配置类;在所述Hive的数据库连接实例上执行DESC EXTENDED语句获取Hive数据表的详细信息,所述Hive数据表的描述信息包括Hive数据表的存储路径、输入格式类的名称、输出格式类的名称、字段分割符、序列化/反序列化类的名称;根据所述输入格式类的名称,新建所述输入格式类的对象,所述输入格式类扩展了Hadoop框架提供的org.apache.hadoop.mapred.InputFormat接口;
S3:在Hive数据读取类中使用hadoop的任务分片生成程序模块生成用以读取Hive数据表的Flink任务分片;
S4:在所述Hive数据读取类中实现生成Flink任务分片列表对应的分片分配器,所述Flink任务分片分配器实现Flink框架提供的InputSplitAssigner接口,以使Flink任务分片列表的数据能够进入Flink平台;
S5:在所述数据读取类中实现InputFormat接口的打开方法,所述打开方法用于从指定Flink任务分片中创建RecordReader对象,所述RecordReader是Flink框架提供的数据记录读取接口;
S6:关闭RecordReader的对象;
S7:在所述读取读取类中实现hadoop的InputFormat接口的数据检测程序模块,用于判断Hive数据表是否读取完毕;
S8:在所述数据读取类中实现InputFormat接口的nextRecord方法,所述nextRecord方法用于从Hive数据表中读取一条记录;在实现的nextRecord方法中,根据需要对所述值对象进行适当的变换后返回。
进一步的,所述步骤S3具体包括如下步骤:
S31:对Hive数据读取类实现创建任务分片方法以对Hive数据读取类的数据进行任务分片的创建,创建任务分片列表;
S32:创建任务分片分配器,并将上述包括数据读取类的数据的任务分片列表输入Hadoop。
进一步的,所述步骤S5的open方法,包括如下步骤:从Flink任务分片对象中提取Hadoop任务分片对象;调用所述输入格式类的对象的getRecordReader方法,传入所述Hadoop任务分片对象和JobConf对象作为所述getRecordReader方法的参数,得到RecordReader对象;新建关键字对象和值对象,所述关键字和值对象都是Object类的实例,分别用于保存所述RecordReader对象从Hive数据表中读取的记录的关键字和值;
一种数据读取系统,包括Flink程序模块、hadoop程序模块,所述系统采用上述的数据读取方法。
一种数据写入方法,包括如下步骤:
D1:定义Hive数据写入类,该Hive数据写入类用以实现FLINK输出接口;
D2:通过Hive的JDBC连接字符串获取Hive的数据库连接实例;新建JobConf对象,其中JobConf为Hadoop框架提供的Map Reduce作业的配置类;在数据库连接实例上获取Hive数据表的信息,所述Hive数据表的描述信息包括Hive数据表的存储路径、输入格式类的名称、输出格式类的名称、字段分割符、序列化/反序列化类的名称;根据所述输出格式类的名称新建所述输出格式类的对象,所述输入格式类扩展了Hadoop框架提供的org.apache.hadoop.mapred.OutputFormat接口。
D3:在所述Hive数据写入类中实现OutputFormat接口的open方法,所述open方法接收任务编号和任务数作为参数,用于创建RecordWriter对象,所述RecordWriter是Hadoop框架提供的数据记录写入接口;
D4:在所述Hive数据写入类中实现OutputFormat接口的writeRecord方法,所述writeRecord方法接收需要写入Hive数据表的数据记录作为参数,用于将Flink平台的数据记录写入Hive数据表;
D5:在所述Hive数据写入类中实现OutputFormat接口的close方法,在实现的close方法中关闭所述RecordWriter对象。
进一步的,在实现的open方法中,包含如下子步骤:
步骤D31:确定和任务编号一一对应的文件名,比如可以将open方法的任务编号参数和当前时间戳连接在一起作为写入HDFS文件系统的文件名;
步骤D32:将所述Hive表的存储路径和所述文件名拼接在一起,形成写入HDFS的文件的完整路径;
步骤D33:调用所述输出格式类的对象的getRecordWriter方法,传入空值、所述JobConf对象、所属完整路径、Reporter.NULL作为参数,得到RecordWriter对象。
进一步的,在实现的writeRecord方法中,包含如下子步骤:
步骤D41:将所述数据记录的每个字段取出来,组成一个记录列表;
步骤D42:将所述数据记录的每个字段的名称和类型转换为对应的ObjectInpector类的对象,组成一个ObjectInspector类的对象列表;
步骤D43:根据所述新建序列化/反序列化类的名称,新建序列化/反序列化类;
步骤D44:调用序列化/反序列化类的对象的serialize方法,传入所述记录列表和所述ObjectInspector类的对象列表作为参数,得到所述数据记录序列化以后的结果;
步骤D45:调用NullWritable类的get方法,获取一个NullWritable类的对象,其中NullWritable是Hadoop框架提供的一个WritableComparable接口的实现类;步骤D46:调用所述RecordWriter对象write方法,传入所述NullWritable类的对象和所述Row类的对象序列化以后的结果作为参数,这样就实现了将Row类型的对象写入Hive数据表的过程。
一种数据写入系统,包括Flink程序模块、hadoop程序模块,所述系统采用上述的数据写入方法。
与现有技术相比,本发明具有如下有益效果:
通过在Flink平台解析Hive数据表的详细信息,将Hive数据表的读写转换为HDFS文件系统上的文件读写,避免了使用JDBC读取Hive数据表可能出现的假死和写入速度慢的问题,本方法和系统直接在底层的HDFS文件系统上进行Hive数据表数据的读写,因而吞吐量高、稳定性强。
附图说明
图1为现有技术的一种数据读取和写入方法的数据流图。
图2为本发明的数据读取和写入方法的逻辑框图。
图3为本发明的数据读取方法的流程图。
图4为本发明的数据写入方法的流程图。
具体实施方式
下面结合附图详细举例说明本发明的实施方式,本发明的实施例是为了对本发明进一步解释说明,而非对本发明的保护范围限制。
请参图2、图3所示,本申请提出一种Flink平台快速读取Hive的方法,包括:
定义Hive数据读取类,所述数据读取类实现Flink框架的InputFormat接口。在本实施方式中,使用Java程序,定义Hive数据读取类class HiveInputFormat implementsInputFormat。
在所述Hive数据读取类中实现Flink框架的InputFormat接口的configure方法;
在实现的configure方法中,包括如下子步骤:
通过Hive的JDBC连接字符串获取Hive的数据库连接实例;
新建JobConf对象,其中JobConf为Hadoop框架提供的Map Reduce作业的配置类;
在所述Hive的数据库连接实例上执行DESC EXTENDED语句获取Hive数据表的详细信息,所述Hive数据表的描述信息包括Hive数据表的存储路径、输入格式类的名称、输出格式类的名称、字段分割符、序列化/反序列化类的名称;
在本实施方式中,执行DESC EXTENDED kepa_250,其中kepa_250为Hive数据表名;
执行上述语句之后,获取到Hive数据表的详细信息:
Figure BDA0001843364070000031
Figure BDA0001843364070000041
其中,hdfs://ns1/user/hive/warehouse/wujing_test.db/kepa_250为Hive数据表kepa_250的存储路径,org.apache.hadoop.hive.ql.io.orc.OrcInputFormat为Hive数据表kepa_250的输入格式类的名称,org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat为Hive数据表kepa_250的输出格式类的名称,org.apache.hadoop.hive.ql.io.orc.OrcSerde为Hive数据表kepa_250的序列化/反序列化类的名称。
根据所述输入格式类的名称(如org.apache.hadoop.mapred.TextInputFormat、org.apache.hadoop.hive.ql.io.orc.OrcInputFormat等),新建所述输入格式类的对象,所述输入格式类扩展了Hadoop框架提供的org.apache.hadoop.mapred.InputFormat接口。根据所述输入格式类的名称新建所述输入格式类的对象,所述输入格式类扩展了Hadoop框架提供的org.apache.hadoop.mapred.InputFormat接口;在本实施例中,新建所述输入格式类的对象如下:
org.apache.hadoop.mapred.InputFormat inputFormat=new OrcInputFormat()。
在所述Hive数据读取类中实现InputFormat接口的createInputSplits方法,该方法用于生成读取Hive数据表的Flink任务分片;在实现的createInputSplits方法中:调用Hadoop开源框架的FileInputFormat类的setInputPaths方法,所述Hive数据库连接实例和所述JobConf对象作为所述setInputPath方法的参数;调用所述输入格式类的对象的getSplits方法,传入所述JobConf对象和分片数量作为方法参数,得到Hadoop任务分片列表;定义Flink分片实现类,所述分片实现类扩展Flink框架的InputSplit接口;对于所述Hadoop任务分片列表中的每一个Hadoop任务分片,新建所述Flink分片实现类的对象,将所述Hadoop任务分片序列化后保存为Flink分片实现类的内部成员对象;将生成的多个Flink分片实现类的对象组合成Flink任务分片列表并返回所述Flink任务分片列表。在本实施方式中,在Java代码中定义Flink分片实现类class HdfsOrcInputSplit implementsInputSplit。
在所述Hive数据读取类中实现InputFormat接口的getInputSplitAssigner方法,所述getInputSplitAssigner方法接收Flink任务分片列表为参数,用于生成Flink任务分片列表对应的分片分配器;所述Flink任务分片分配器实现Flink框架提供的InputSplitAssigner接口。在本实施方式中,用户可以根据需要自行选择其他分片分配器,或者实现自定义的分片分配器。
在所述数据读取类中实现InputFormat接口的open方法,所述open方法用于从指定Flink任务分片中创建RecordReader对象,所述RecordReader是Flink框架提供的数据记录读取接口。在实现的open方法中,从Flink任务分片对象中提取Hadoop任务分片对象;调用所述输入格式类的对象的getRecordReader方法,传入所述Hadoop任务分片对象和JobConf对象作为所述getRecordReader方法的参数,得到RecordReader对象;新建关键字对象和值对象,所述关键字和值对象都是Object类的实例,分别用于保存所述RecordReader对象从Hive数据表中读取的记录的关键字和值。
在所述数据读取类中实现InputFormat接口的close方法,在实现的close方法中调用所述RecordReader对象的close方法关闭所述RecordReader对象。
在所述读取读取类中实现InputFormat接口的reachRecord方法,所述reachRecord方法用于判断Hive数据表是否读取完毕;在实现的reachRecord方法中,调用所述RecordReader对象的next方法,传入所述关键字对象和值对象作为所述next方法的参数,所述next方法执行完毕后会将从Hive数据表中读取的下一条记录的关键字和值保存到所述关键字对象和值对象;如果Hive数据表已经读取完毕,则所述next方法返回False,否则返回True;将所述next方法的返回值作为所述reachRecord方法的返回值。
在所述数据读取类中实现InputFormat接口的nextRecord方法,所述nextRecord方法用于从Hive数据表中读取一条记录;在实现的nextRecord方法中,根据需要对所述值对象进行适当的变换后返回。在实现的nextRecord方法中,根据需要对所述值对象进行适当的变换后返回。可以将所述值对象变换成Row类的对象,所述Row类是Flink提供的数据记录类,也可以将值对象变换成字符串等形式。
本发明还提供一种数据读取系统,包括Flink程序模块、hadoop程序模块,所述系统采用上述的数据读取方法。
请参图2、图4所示,一种Flink平台快速写入Hive的方法,包括如下步骤:
定义Hive数据写入类,所述数据写入类实现Flink框架的OutputFormat接口;
在所述Hive数据写入类中实现Flink框架的outputFormat接口的configure方法;在实现的configure方法中,包括如下子步骤:通过Hive的JDBC连接字符串获取Hive的数据库连接实例;新建JobConf对象,其中JobConf为Hadoop框架提供的Map Reduce作业的配置类;在所述Hive的数据库连接实例上执行DESC EXTENDED语句获取Hive数据表的详细信息,所述Hive数据表的描述信息包括Hive数据表的存储路径、输入格式类的名称、输出格式类的名称、序列化/反序列化类的名称,等;根据所述输出格式类的名称新建所述输出格式类的对象,所述输入格式类扩展了Hadoop框架提供的org.apache.hadoop.mapred.OutputFormat接口。
在所述Hive数据写入类中实现OutputFormat接口的open方法,所述open方法接收任务编号和任务数作为参数,用于创建RecordWriter对象,所述RecordWriter是Hadoop框架提供的数据记录写入接口;在实现的open方法中,包含如下子步骤:确定和任务编号一一对应的文件名,比如可以将open方法的任务编号参数和当前时间戳连接在一起作为写入HDFS文件系统的文件名;将所述Hive表的存储路径和所述文件名拼接在一起,形成写入HDFS的文件的完整路径;调用所述输出格式类的对象的getRecordWriter方法,传入空值、所述JobConf对象、所属完整路径、Reporter.NULL作为参数,得到RecordWriter对象;
在所述Hive数据写入类中实现OutputFormat接口的writeRecord方法,所述writeRecord方法接收需要写入Hive数据表的数据记录作为参数,用于将Flink平台的数据记录写入Hive数据表;在实现的writeRecord方法中,包含如下子步骤:将所述数据记录的每个字段取出来,组成一个记录列表;将所述数据记录的每个字段的名称和类型转换为对应的ObjectInpector类的对象,组成一个ObjectInspector类的对象列表;根据所述新建序列化/反序列化类的名称,新建序列化/反序列化类;调用序列化/反序列化类的对象的serialize方法,传入所述记录列表和所述ObjectInspector类的对象列表作为参数,得到所述数据记录序列化以后的结果;调用NullWritable类的get方法,获取一个NullWritable类的对象,其中NullWritable是Hadoop框架提供的一个WritableComparable接口的实现类;调用所述RecordWriter对象write方法,传入所述NullWritable类的对象和所述Row类的对象序列化以后的结果作为参数,这样就实现了将Row类型的对象写入Hive数据表的过程。
在所述Hive数据写入类中实现OutputFormat接口的close方法,在实现的close方法中关闭所述RecordWriter对象。
本发明还提供一种数据写入系统,包括Flink程序模块、hadoop程序模块,所述系统采用上述的数据写入方法。
Flink平台通过Hive读取类定义模块直接从HDFS文件系统读取Hive数据表的底层存储文件。同样,Flink平台通过Hive写入类定义模块直接向HDFS文件系统写入Hive数据表的底层存储文件。采用本申请提出的方法和系统,Flink平台读取和写入Hive数据表数据不需要经过Hive的JDBC服务器从Hadoop获取,Hive的JDBC服务器仅仅被Hive读取类定义模块和Hive写入类定义模块用来查找Hive数据表的详细信息,而不承担大批量数据的传输工作。

Claims (8)

1.一种数据读取方法,其特征在于,包括如下步骤:
S1:定义Hive数据读取类,该Hive数据读取类用以实现输入Flink接口;
S2:通过Hive的JDBC连接字符串获取Hive的数据库连接实例;新建JobConf对象,其中JobConf为Hadoop框架提供的Map Reduce作业的配置类;在所述Hive的数据库连接实例上执行DESC EXTENDED语句获取Hive数据表的详细信息,所述Hive数据表的描述信息包括Hive数据表的存储路径、输入格式类的名称、输出格式类的名称、字段分割符、序列化/反序列化类的名称;根据所述输入格式类的名称,新建所述输入格式类的对象,所述输入格式类扩展了Hadoop框架提供的org.apache.hadoop.mapred.InputFormat接口;
S3:在Hive数据读取类中使用Hadoop的任务分片生成程序模块生成用以读取Hive数据表的Flink任务分片;
S4:在所述Hive数据读取类中实现生成Flink任务分片列表对应的分片分配器,所述Flink任务分片分配器实现Flink框架提供的InputSplitAssigner接口,以使Flink任务分片列表的数据能够进入Flink平台;
S5:在所述数据读取类中实现InputFormat接口的打开方法,所述打开方法用于从指定Flink任务分片中创建RecordReader对象,所述RecordReader是Flink框架提供的数据记录读取接口;
S6:关闭RecordReader的对象;
S7:在所述数据读取类中实现Hadoop的InputFormat接口的数据检测程序模块,用于判断Hive数据表是否读取完毕;
S8:在所述数据读取类中实现InputFormat接口的nextRecord方法,所述nextRecord方法用于从Hive数据表中读取一条记录;在实现的nextRecord方法中,根据需要对值对象进行适当的变换后返回。
2.根据权利要求1所述的数据读取方法,其特征在于:所述步骤S3具体包括如下步骤:
S31:对Hive数据读取类实现创建任务分片方法以对Hive数据读取类的数据进行任务分片的创建,创建任务分片列表;
S32:创建任务分片分配器,并将包括上述数据读取类的数据的任务分片列表输入Hadoop。
3.根据权利要求1所述的数据读取方法,其特征在于:所述步骤S5的打开方法,包括如下步骤:从Flink任务分片对象中提取Hadoop任务分片对象;调用所述输入格式类的对象的getRecordReader方法,传入所述Hadoop任务分片对象和JobConf对象作为所述getRecordReader方法的参数,得到RecordReader对象;新建关键字对象和值对象,所述关键字和值对象都是Object类的实例,分别用于保存所述RecordReader对象从Hive数据表中读取的记录的关键字和值。
4.一种计算机数据读取系统,包括Flink程序模块、Hadoop程序模块,其特征在于:所述系统采用权利要求1至3中任一种所述的数据读取方法。
5.一种数据写入方法,其特征在于,包括如下步骤:
D1:定义Hive数据写入类,该Hive数据写入类用以实现Flink输出接口;
D2:通过Hive的JDBC连接字符串获取Hive的数据库连接实例;新建JobConf对象,其中JobConf为Hadoop框架提供的Map Reduce作业的配置类;在数据库连接实例上获取Hive数据表的信息,所述Hive数据表的描述信息包括Hive数据表的存储路径、输入格式类的名称、输出格式类的名称、字段分割符、序列化/反序列化类的名称;根据所述输出格式类的名称新建所述输出格式类的对象,所述输入格式类扩展了Hadoop框架提供的org.apache.hadoop.mapred.OutputFormat接口;
D3:在所述Hive数据写入类中实现OutputFormat接口的open方法,所述open方法接收任务编号和任务数作为参数,用于创建RecordWriter对象,所述RecordWriter是Hadoop框架提供的数据记录写入接口;
D4:在所述Hive数据写入类中实现OutputFormat接口的writeRecord方法,所述writeRecord方法接收需要写入Hive数据表的数据记录作为参数,用于将Flink平台的数据记录写入Hive数据表;
D5:在所述Hive数据写入类中实现OutputFormat接口的close方法,在实现的close方法中关闭所述RecordWriter对象。
6.根据权利要求5所述的数据写入方法,其特征在于,
在实现的open方法中,包含如下子步骤:
步骤D31:确定和任务编号一一对应的文件名,比如可以将open方法的任务编号参数和当前时间戳连接在一起作为写入HDFS文件系统的文件名;
步骤D32:将所述Hive数据表的存储路径和所述文件名拼接在一起,形成写入HDFS的文件的完整路径;
步骤D33:调用所述输出格式类的对象的getRecordWriter方法,传入空值、所述JobConf对象、所属完整路径、Reporter.NULL作为参数,得到RecordWriter对象。
7.根据权利要求5所述的数据写入方法,其特征在于,
在实现的writeRecord方法中,包含如下子步骤:
步骤D41:将所述数据记录的每个字段取出来,组成一个记录列表;
步骤D42:将所述数据记录的每个字段的名称和类型转换为对应的ObjectInpector类的对象,组成一个ObjectInspector类的对象列表;
步骤D43:根据所述序列化/反序列化类的名称,新建序列化/反序列化类;
步骤D44:调用序列化/反序列化类的对象的serialize方法,传入所述记录列表和所述ObjectInspector类的对象列表作为参数,得到所述数据记录序列化以后的结果;
步骤D45:调用NullWritable类的get方法,获取一个NullWritable类的对象,其中NullWritable是Hadoop框架提供的一个WritableComparable接口的实现类;步骤D46:调用所述RecordWriter对象write方法,传入所述NullWritable类的对象和Row类的对象序列化以后的结果作为参数,这样就实现了将Row类型的对象写入Hive数据表的过程。
8.一种数据写入系统,包括Flink程序模块、Hadoop程序模块,其特征在于,所述系统采用权利要求5至7中任一种所述的数据写入方法。
CN201811258580.9A 2018-10-26 2018-10-26 数据读取、写入方法及数据读取、写入系统 Active CN109376154B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811258580.9A CN109376154B (zh) 2018-10-26 2018-10-26 数据读取、写入方法及数据读取、写入系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811258580.9A CN109376154B (zh) 2018-10-26 2018-10-26 数据读取、写入方法及数据读取、写入系统

Publications (2)

Publication Number Publication Date
CN109376154A CN109376154A (zh) 2019-02-22
CN109376154B true CN109376154B (zh) 2020-11-10

Family

ID=65389719

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811258580.9A Active CN109376154B (zh) 2018-10-26 2018-10-26 数据读取、写入方法及数据读取、写入系统

Country Status (1)

Country Link
CN (1) CN109376154B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113111131B (zh) * 2021-04-30 2022-07-08 苏州科达科技股份有限公司 基于Flink实现Neo4j数据同步的方法及系统、集成方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107016086A (zh) * 2017-04-01 2017-08-04 四川艾特赢泰智能科技有限责任公司 一种提取安卓系统GooglePlay中行为及位置数据的方法
CN107368320A (zh) * 2017-07-25 2017-11-21 南京林业大学 一种简易早操数据统计系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10803083B2 (en) * 2015-08-27 2020-10-13 Infosys Limited System and method of generating platform-agnostic abstract syntax tree
CN105843899B (zh) * 2016-03-23 2017-07-18 炫彩互动网络科技有限公司 一种可简化编程的大数据自动化解析方法及系统
US20180203744A1 (en) * 2017-01-09 2018-07-19 Alexander WIESMAIER Data ingestion and analytics platform with systems, methods and computer program products useful in conjunction therewith
CN108256046A (zh) * 2018-01-12 2018-07-06 福建星瑞格软件有限公司 大数据处理框架源数据的统一访问通道的实现方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107016086A (zh) * 2017-04-01 2017-08-04 四川艾特赢泰智能科技有限责任公司 一种提取安卓系统GooglePlay中行为及位置数据的方法
CN107368320A (zh) * 2017-07-25 2017-11-21 南京林业大学 一种简易早操数据统计系统

Also Published As

Publication number Publication date
CN109376154A (zh) 2019-02-22

Similar Documents

Publication Publication Date Title
EP3446242B1 (en) Query plan generation and execution in a relational database management system with a temporal-relational database
CN106202207B (zh) 一种基于HBase-ORM的索引及检索系统
US6556986B2 (en) Database management method of invoking a function retrieving index type definition, cataloging particular index which has not yet been supported by a database system
CN111782265B (zh) 基于字段级血缘关系的软件资源系统及其建立方法
US9753977B2 (en) Method and system for managing database
CN114625732B (zh) 基于结构化查询语言sql的查询方法和系统
CN107203640B (zh) 通过数据库运行记录建立物理模型的方法及系统
US20210209098A1 (en) Converting database language statements between dialects
WO2019161645A1 (zh) 基于Shell的数据表提取方法、终端、设备及存储介质
CN111627552B (zh) 一种医疗流式数据血缘关系分析、存储方法及装置
Sahal et al. Exploiting coarse-grained reused-based opportunities in Big Data multi-query optimization
US20240061831A1 (en) Generating Object Morphisms During Object Search
JP6670097B2 (ja) 関係型データベース表の列横断的検索
CN109657803A (zh) 机器学习模型的构建
CN112970011A (zh) 记录查询优化中的谱系
CN116431598A (zh) 一种基于Redis的关系型数据库全量内存化的方法
CN109376154B (zh) 数据读取、写入方法及数据读取、写入系统
CN116383238B (zh) 基于图结构的数据虚拟化系统、方法、装置、设备及介质
US20180203900A1 (en) Transforming a user-defined table function to a derived table in a database management system
CN113297181A (zh) 配置项管理数据库、数据处理方法和装置
US11789940B2 (en) Natural language interface to databases
CN106802922B (zh) 一种基于对象的溯源存储系统及方法
US9959295B1 (en) S-expression based computation of lineage and change impact analysis
JP2004192657A (ja) 情報検索システム、情報検索方法および情報検索用プログラムを記録した記録媒体
Zhang et al. The research and design of SQL processing in a data-mining system based on MapReduce

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
CP02 Change in the address of a patent holder

Address after: 311121 room 102-1 / F, room 102-2 / F, building 6, Haizhi center, 2301 yuhangtang Road, Cangqian street, Yuhang District, Hangzhou, Zhejiang Province

Patentee after: HANGZHOU DAISHU TECHNOLOGY Co.,Ltd.

Address before: 310030 8F, building 2, Hangzhou Internet innovation and entrepreneurship Park, 176 Zixia street, Xihu District, Hangzhou City, Zhejiang Province

Patentee before: HANGZHOU DAISHU TECHNOLOGY Co.,Ltd.

CP02 Change in the address of a patent holder