CN110297830A - 一种Redshift外部表动态列的处理方法及装置 - Google Patents

一种Redshift外部表动态列的处理方法及装置 Download PDF

Info

Publication number
CN110297830A
CN110297830A CN201910565114.3A CN201910565114A CN110297830A CN 110297830 A CN110297830 A CN 110297830A CN 201910565114 A CN201910565114 A CN 201910565114A CN 110297830 A CN110297830 A CN 110297830A
Authority
CN
China
Prior art keywords
redshift
column
header information
external table
external
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.)
Granted
Application number
CN201910565114.3A
Other languages
English (en)
Other versions
CN110297830B (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.)
Chengdu Pinguo Technology Co Ltd
Original Assignee
Chengdu Pinguo 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 Chengdu Pinguo Technology Co Ltd filed Critical Chengdu Pinguo Technology Co Ltd
Priority to CN201910565114.3A priority Critical patent/CN110297830B/zh
Publication of CN110297830A publication Critical patent/CN110297830A/zh
Application granted granted Critical
Publication of CN110297830B publication Critical patent/CN110297830B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开一种Redshift外部表动态列的处理方法及装置,包括:加载Redshift外部表的第一表头信息;所述第一表头信息包括:外部表的列名称,所述列名称与待存储的Spark DataFrame列的映射关系,所述列名称的使用情况;根据所述第一表头信息,将所述Redshift外部表的列与所述待存储的Spark DataFrame的列进行一一映射,生成Redshift外部表的第二表头信息;根据所述第二表头信息,更新所述待存储的Spark DataFrame的表头结构,获取更新后的Spark DataFrame;将所述更新后的Spark DataFrame存储于所述Redshift外部表。本发明提供的技术方案,能够动态地改变Redshift外部表的列结构,简化操作。

Description

一种Redshift外部表动态列的处理方法及装置
技术领域
本发明涉及数据处理技术领域,尤其涉及一种Redshift外部表动态列的处理方法及装置。
背景技术
亚马逊云服务提供一系列基础服务,其中包括AwSRedshift。AWSRedshift是一个快速、可扩展的数据仓库,可以简单、经济、高效地分析数据仓库和数据湖中的所有数据。AWS Redshift作为落地数据清洗后的存储介质和分析引擎,数据分析部门可以直接对数据进行查看、抽取、汇总等操作。
现有的以天为粒度的统计数据存储于AWS Redshift服务器上,以天为分区键。出于对存储成本和安全的考虑,我们会为每一份数据在AWS S3中保留一份拷贝,AWSRedshift服务器只存储近3月的数据。对于存储于AWS Redshift服务器上的数据,因为数据引擎的支持,改变表的列结构是没问题的。
而对于统计粒度要求更高的数据,比如精细到Session级别的数据(用户操作间隔不超过5分钟,被认为是一个Session),因成本的限制其数据体量不适合存储至AWSRedshift服务器上。通过Amazon Redshift Spectrum工-具的支持,可以为这类数据选择成本更低的AWS S3作为存储介质,然后将数据以外部表的形式注册于AWS Redshift中,即把AWS S3数据与AWS Redshift声明的外部表关联起来,这样数据部门可以像使用普通表一样查看这些数据。但是这种存储方式不支持对列结构的直接修改。当需要对表的列结构进行修改时(例如,需要作废或增加一些统计信息时),都只能先删除Amazon Redshift外部表,再按照新的列结构重新建立此表,操作上非常不方便。
发明内容
本发明旨在提供一种Redshift外部表动态列的处理方法及装置,能够动态地改变Redshift外部表的列结构,简化操作。
为达到上述目的,本发明采用的技术方案如下:
一种Redshift外部表动态列的处理方法,包括:加载Redshift外部表的第一表头信息;所述第一表头信息包括:外部表的列名称,所述列名称与待存储的Spark DataFrame列的映射关系,所述列名称的使用情况;根据所述第一表头信息,将所述Redshift外部表的列与所述待存储的Spark DataFrame的列进行一一映射,生成Redshift外部表的第二表头信息;根据所述第二表头信息,更新所述待存储的Spark DataFrame的表头结构,获取更新后的Spark DataFrame;将所述更新后的Spark DataFrame存储于所述Redshift外部表。
进一步地,还包括:根据所述第二表头信息,创建或更新Redshift View;所述Redshift View用于查询所述Redshift外部表中的预定列。
一种Redshift外部表动态列的处理装置,包括:加载单元,用于加载Redshift外部表的第一表头信息;所述第一表头信息包括:外部表的列名称,所述列名称与待存储的Spark DataFrame列的映射关系,所述列名称的使用情况;映射单元,用于根据所述第一表头信息,将所述Redshift外部表的列与所述待存储的Spark DataFrame的列进行一一映射,生成Redshift外部表的第二表头信息;第一更新单元,用于根据所述第二表头信息,更新所述待存储的Spark DataFrame的表头结构,获取更新后的Spark DataFrame;存储单元,用于将所述更新后的Spark DataFrame存储于所述Redshift外部表。
进一步地,还包括:第二更新单元,用于根据所述第二表头信息,创建或更新Redshift View;所述Redshift View用于查询所述Redshift外部表中的预定列。
本发明实施例提供的Redshift外部表动态列的处理方法及装置,通过将Redshift外部表的列与待存储的Spark DataFrame的列之间进行一一映射,让AWS Redshift外部表的列获取了动态性能,即能够动态地改变AWS Redshift外部表的列结构,有效地解决了现有的存储方式由于不支持对列结构进行直接修改、而需要重新建表的技术问题,因而能够简化操作。此外,本发明还根据第二表头信息,创建或更新了Redshift View,使用户能够直接面对过滤出的有效列,进一步简化、方便了查询操作。
附图说明
图1为本发明实施例一的方法流程图;
图2为本发明实施例二的方法流程图;
图3为本发明实施例一的装置结构图;
图4为本发明实施例二的装置结构图;
图5为本发明实施例中Redshift外部表的第一表头信息;
图6为本发明实施例中Spark DataFrame的表头信息;
图7为本发明实施例中Redshift外部表的第二表头信息;
图8为本发明实施例中加载Redshift外部表的第一表头信息的程序代码;
图9为本发明实施例中加载Redshift外部表的第二表头信息的程序代码。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。
图1为本发明实施例一的方法流程图,包括:
步骤101,加载Redshift外部表的第一表头信息;所述第一表头信息包括:外部表的列名称,所述列名称与待存储的Spark DataFrame列的映射关系,所述列名称的使用情况;
本实施例中,在存储Spark DataFrame之前,即将数据存储至AWS S3之前,将相应的Redshift外部表的第一表头信息加载出来。本实施例中的外部表为与业务相关的外部表,如果此时未找到该外部表,则新建一张外部表。外部表的列中包括预留列(为今后可能增加的统计信息预留可用列,今后如有需要可以直接占用),如果此时未找到该预留列,则直接按照预留列参数初始化一套预留列出来。上述预留列参数用于指定预留的string类型和double类型列的列数,可用最大列的限制总数为1598列。所述列名称与待存储的SparkDataFrame列的映射关系存储于Metadata中。所述列名称的使用情况包括该列是否已被使用,分别用true和false来表示被使用和未被使用的情况,如图5和图8所示。
步骤102,根据所述第一表头信息,将所述Redshift外部表的列与所述待存储的Spark DataFrame的列进行一一映射,生成Redshift外部表的第二表头信息;
本步骤中,通过映射操作,更新Redshift外部表的第一表头信息,即为Redshift外部表的第二表头信息。让Spark DataFrame的列的变化体现在更新后的外部表表头中,即体现在上述第二表头信息中。如图5至图7所示。
步骤103,根据所述第二表头信息,更新所述待存储的Spark DataFrame的表头结构,获取更新后的Spark DataFrame;
本实施例中,更新后的Spark DataFrame的表头结构即为最终存储的AWSRedshift外部表的表头结构。
步骤104,将所述更新后的Spark DataFrame存储于所述Redshift外部表。
图2为本发明实施例二的方法流程图,在实施例一的基础上,本发明实施例二还包括:
步骤105,根据所述第二表头信息,创建或更新Redshift View;所述RedshiftView用于查询所述Redshift外部表中的预定列。
本步骤中,创建或更新Redshift View的方法可以为,将一段SQL语句预设为一个View,以后查看这个View就相当于通过预设的SQL进行了查询。本实施例中,所述预定列为有效列。Redshift View用于将未占用的预留列和停用列过滤掉,只向用户展示有效列。在图9所示的程序代码中,Metadata信息为空就代表未占用预留列,metadata中的in_use字段为false的列会在采用Redshift View查询时被过滤掉,而只展示metadata中的in_use字段为true的列。
本发明还公开一种Redshift外部表动态列的处理装置,如图3所示,包括:加载单元,用于加载Redshift外部表的第一表头信息;所述第一表头信息包括:外部表的列名称,所述列名称与待存储的Spark DataFrame列的映射关系,所述列名称的使用情况;映射单元,用于根据所述第一表头信息,将所述Redshift外部表的列与所述待存储的SparkDataFrame的列进行一一映射,生成Redshift外部表的第二表头信息;第一更新单元,用于根据所述第二表头信息,更新所述待存储的Spark DataFrame的表头结构,获取更新后的Spark DataFrame;存储单元,用于将所述更新后的Spark DataFrame存储于所述Redshift外部表。
如图4所示,本装置在图3的基础上,还包括:第二更新单元,用于根据所述第二表头信息,创建或更新Redshift View;所述Redshift View用于查询所述Redsh ift外部表中的预定列。
本装置的工作原理与工作流程已经在本发明公开的Redshift外部表动态列的处理方法中详细描述,此处不再赘述。
本发明的理论原理如下:
作为数据分析人员,需要一个快捷方便的数据分析工具。同时也希望用于分析的数据拥有更细的粒度(这里体现为更细的时间维度),以便支持更为细致的数据分析。而作为开发人员,通过AWS S3来存储结构化数据,然后通过AWS Redshift外部表将数据暴露出来是可行的。但是,AWS Redshift外部表不支持对列结构的直接修改,任何对列结构的修改都意味着对表的重建。而依托于本发明提供的处理方法,将列的动态化赋予了AWSRedshift外部表,解决了以上问题。
本发明实施例提供的Redshift外部表动态列的处理方法及装置,通过AWS S3获得了近乎无限的数据存储空间,让细粒度的数据(session级别粒度)也能通过AWS Redshift进行查询。更重要的是,通过将Redshift外部表的列与待存储的Spark DataFrame的列之间进行一一映射,让AWS Redshift外部表的列获取了动态性能,即能够动态地改变AWSRedshift外部表的列结构,有效地解决了现有的存储方式由于不支持对列结构进行直接修改、而需要重新建表的技术问题,因而能够简化操作。此外,本发明还根据第二表头信息,创建或更新了Redshift View,使用户能够直接面对过滤出的有效列,用户对AWS Redshift外部表的映射逻辑是无感的,进一步简化、方便了查询操作。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。

Claims (4)

1.一种Redshift外部表动态列的处理方法,其特征在于,包括:
加载Redshift外部表的第一表头信息;所述第一表头信息包括:外部表的列名称,所述列名称与待存储的Spark DataFrame列的映射关系,所述列名称的使用情况;
根据所述第一表头信息,将所述Redshift外部表的列与所述待存储的SparkDataFrame的列进行一一映射,生成Redshift外部表的第二表头信息;
根据所述第二表头信息,更新所述待存储的Spark DataFrame的表头结构,获取更新后的Spark DataFrame;
将所述更新后的Spark DataFrame存储于所述Redshift外部表。
2.根据权利要求1所述的Redshift外部表动态列的处理方法,其特征在于,还包括:
根据所述第二表头信息,创建或更新Redshift View;所述Redshift View用于查询所述Redshift外部表中的预定列。
3.一种Redshift外部表动态列的处理装置,其特征在于,包括:
加载单元,用于加载Redshift外部表的第一表头信息;所述第一表头信息包括:外部表的列名称,所述列名称与待存储的Spark DataFrame列的映射关系,所述列名称的使用情况;
映射单元,用于根据所述第一表头信息,将所述Redshift外部表的列与所述待存储的Spark DataFrame的列进行一一映射,生成Redshift外部表的第二表头信息;
第一更新单元,用于根据所述第二表头信息,更新所述待存储的Spark DataFrame的表头结构,获取更新后的Spark DataFrame;
存储单元,用于将所述更新后的Spark DataFrame存储于所述Redshift外部表。
4.根据权利要求3所述的Redshift外部表动态列的处理装置,其特征在于,还包括:
第二更新单元,用于根据所述第二表头信息,创建或更新Redshift View;所述Redshift View用于查询所述Redshift外部表中的预定列。
CN201910565114.3A 2019-06-26 2019-06-26 一种Redshift外部表动态列的处理方法及装置 Active CN110297830B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910565114.3A CN110297830B (zh) 2019-06-26 2019-06-26 一种Redshift外部表动态列的处理方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910565114.3A CN110297830B (zh) 2019-06-26 2019-06-26 一种Redshift外部表动态列的处理方法及装置

Publications (2)

Publication Number Publication Date
CN110297830A true CN110297830A (zh) 2019-10-01
CN110297830B CN110297830B (zh) 2021-09-14

Family

ID=68028967

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910565114.3A Active CN110297830B (zh) 2019-06-26 2019-06-26 一种Redshift外部表动态列的处理方法及装置

Country Status (1)

Country Link
CN (1) CN110297830B (zh)

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120110515A1 (en) * 2010-10-28 2012-05-03 Cary Scott Abramoff User interface for a digital content management system
CN105283872A (zh) * 2013-04-19 2016-01-27 甲骨文国际公司 为sql处理缓存外部数据源
CN105745644A (zh) * 2013-11-01 2016-07-06 柯宝科技公司 表示在网页浏览器中的网页的状态表示的建立
CN105808746A (zh) * 2016-03-14 2016-07-27 中国科学院计算技术研究所 一种基于Hadoop体系的关系型大数据无缝接入方法及系统
US20170206684A1 (en) * 2016-01-14 2017-07-20 Icharts, Inc. Intelligent container for analytic visualizations
CN107393596A (zh) * 2016-04-26 2017-11-24 三星电子株式会社 半导体存储设备和操作其的方法
CN107463610A (zh) * 2017-06-27 2017-12-12 北京小度信息科技有限公司 一种数据入库方法及装置
US10025599B1 (en) * 2013-05-21 2018-07-17 Progress Software Corporation Connectivity as a service

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120110515A1 (en) * 2010-10-28 2012-05-03 Cary Scott Abramoff User interface for a digital content management system
CN105283872A (zh) * 2013-04-19 2016-01-27 甲骨文国际公司 为sql处理缓存外部数据源
US10025599B1 (en) * 2013-05-21 2018-07-17 Progress Software Corporation Connectivity as a service
CN105745644A (zh) * 2013-11-01 2016-07-06 柯宝科技公司 表示在网页浏览器中的网页的状态表示的建立
US20170206684A1 (en) * 2016-01-14 2017-07-20 Icharts, Inc. Intelligent container for analytic visualizations
CN105808746A (zh) * 2016-03-14 2016-07-27 中国科学院计算技术研究所 一种基于Hadoop体系的关系型大数据无缝接入方法及系统
CN107393596A (zh) * 2016-04-26 2017-11-24 三星电子株式会社 半导体存储设备和操作其的方法
CN107463610A (zh) * 2017-06-27 2017-12-12 北京小度信息科技有限公司 一种数据入库方法及装置

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
AWS TEAM: "Redshift又添新功能:让用户直接查询S3中的海量数据而无需复制到本地", 《HTTPS://AWS.AMAZON.COM/CN/BLOGS/CHINA/REDSHIFT-NEW-FUNCTION/》 *
THOMAS SPICER: "10 Considerations to Quickly Find Success When Adopting Amazon Redshift Spectrum", 《HTTPS://DZONE.COM/ARTICLES/10-CONSIDERATIONS-TO-QUICKLY-FIND-SUCCESS-WHEN-ADO》 *
无: "外部表(EXTERNAL TABLE)", 《HTTPS://BLOG.CSDN.NET/PERFECT_DB/ARTICLE/DETAILS/8899922》 *

Also Published As

Publication number Publication date
CN110297830B (zh) 2021-09-14

Similar Documents

Publication Publication Date Title
US20190102445A1 (en) System and method for enabling multiple parents with weights in a multidimensional database environment
WO2019226327A1 (en) Data platform fabric
US9195470B2 (en) Dynamic data dimensioning by partial reconfiguration of single or multiple field-programmable gate arrays using bootstraps
US10146587B2 (en) Future locking of resources
US20110012902A1 (en) Method and system for visualizing the performance of applications
CN106021266A (zh) 支持动态更新的快速多层索引
US20070299879A1 (en) Method for automated data storage management
FR2677146A1 (fr) Systeme et methode de gestion de memoire de donnees avec attribution d'espace de memoire selon la classe de services demandee.
US10536381B2 (en) Determining connections of a network between source and target nodes in a database
CN109408493A (zh) 一种数据源的迁移方法及系统
CN104639658A (zh) 一种以文件系统挂载访问对象存储的实现方法
CN104573184B (zh) 高速列车产品元模型构建方法和装置
US11308066B1 (en) Optimized database partitioning
CN110402432A (zh) 分布式计算系统中的可用性管理
CN110298189A (zh) 数据库权限管理方法及设备
CN110517018A (zh) 一种基于activiti工作流的节点任意跳转方法及装置
CN108181644A (zh) 一种采样方法及装置
CN105701605B (zh) 一种应用于综合通信导航识别系统中的波形库管理设备
US20160203204A1 (en) Generating a virtual dynamic representative of a taxonomic group with unique inheritance of attributes
CN110297830A (zh) 一种Redshift外部表动态列的处理方法及装置
CN110246033A (zh) 信贷风险监测方法、装置、设备及存储介质
CN108073641A (zh) 查询数据表的方法和装置
CN111198678A (zh) 一种生成GraphQL前端操作接口的方法及装置
JP7003169B2 (ja) ストレージシステム及びストレージシステムのssdの交換方法
CN114997111B (zh) 业务处理方法、装置、计算机设备和存储介质

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