CN110297830A - 一种Redshift外部表动态列的处理方法及装置 - Google Patents
一种Redshift外部表动态列的处理方法及装置 Download PDFInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace 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外部表动态列的处理方法及装置。
背景技术
亚马逊云服务提供一系列基础服务,其中包括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外部表中的预定列。
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)
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 |
-
2019
- 2019-06-26 CN CN201910565114.3A patent/CN110297830B/zh active Active
Patent Citations (8)
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)
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 |