向分析型数据库ADS中导入数据

        ADS是阿里云提供的分析性数据库,实现百亿数据毫秒级计算。

        在使用ADS进行分析之前,需要先将数据导入到ADS中。

1 两种方法

        ADS导入分为两种:批量导入和实时导入。这两种导入方式,是在建表的时候确定的。

1.1 批量导入

        建表的时候,需要指定updateType='batch'

        批量导入目前仅支持数据源为ODPS表的导入,且要求ADS中的字段名称和ODPS表中的字段名称一致。步骤如下:

        (1)在ODPS准备数据

                 a) 如果表不存在,在ODPS建立表,比如Table_A

                 b) 向表中导入数据

                 c) 给用户ALIYUN$garuda_build@aliyun.com赋权。这个用户是阿里云(公有云)指定的用户,

                如果需要从ODPS向ADS导入数据,就需要给这个用户赋权。操作如下:

add user ALIYUN$garuda_build@aliyun.com;--如果用户不存在,需要先建立
grant describe,select on table Table_A to user ALIYUN$garuda_build@aliyun.com;--将需要导出的表的descibe,select权限赋给用户

处理上述的赋权之外,还需要确认ODPS是否打开了项目保护。如果打开项目保护,此时数据只允许在项目内流动,无法流出到项目外,自然无法导入到ADS。

查看是否打开项目保护的命令如下:

show SecurityConfiguration;

如果ProjectProtection=true,这说明项目保护已经打开,此时需要做一些额外的权限操作:

要么将项目保护关闭,要么设置ExceptionPolicy。

具体操作参考:项目空间的数据保护设置

(https://help.aliyun.com/document_detail/27929.html?spm=5176.doc27930.6.225.hNQZZI)

         (2)在ADS中操作

               SQL语法如下:

LOAD DATA FROM 'sourcepath' [IN VERSION dataVersion] [OVERWRITE] INTO TABLE tablename [PARTITION (partition_name,...)]

               sourcepath格式如下:

odps://<project>/<table>/[<partition-1=v1>/.../<partition-n=vn>]

               在这里,具体的命令如下:

LOAD DATA FROM 'odps://project_test/Table_A' OVERWRITE INTO TABLE ads_test_01.Table_A

1.2 实时导入

       建表的时候,需要指定updateType='realtime'

         SQL语法如下:

  INSERT [IGNORE]
     INTO tbl_name (col1,col2...)
VALUES (value1, value2...), (value1, value2...)....

       因为实时表都有主键,如果发生主键冲突,默认执行覆盖行为;

     如果使用INSERT IGNORE语法,则丢弃新插入的数据,保留原有数据。

 

2 使用DataX导入

       DataX中实现了插件adswriter。adswriter支持上面的2中更新方式。

2.1 批量更新

        设置"writeMode":"insert", 具体设置参考https://github.com/alibaba/DataX/tree/master/adswriter

        上面讲到了,ads目前仅支持数据源为ODPS表的导入。

         adswriter的实现方式是,首先将其它数据源的数据保存到odps中的临时表中,然后在讲odps中的数据导入到ads中。

         需要注意权限问题:因为导入到odps中的是临时表,现在adswriter还没有对临时表赋权descibe,select给用户ALIYUN$garuda_build@aliyun.com,所以会导入失败。

         因为实现不知道建立的表的名字是什么,所以在进行权限设置时,使用policy的方式。

       adswriter建立的临时表是以ads数据库名称为前缀,所以,可以建立如下策略:

{
"Version": "1",
"Statement":
 [{
    "Effect":"Allow",
    "Principal":"ALIYUN$garuda_build@aliyun.com",
    "Action":["odps:Describe","odps:Select"],
    "Resource":"acs:odps:*:projects/project_test/tables/ads_test*"
}]
}

2.2 实时更新

         设置"writeMode":"insert", 具体设置参考https://github.com/alibaba/DataX/tree/master/adswriter

3 不同用户间的数据导入

          如果想将用户A的ODPS中的数据导入到用户B的ADS中,需要做一些权限设置。

          因为为了保护用户的数据安全,ADS目前仅允许导入操作者为Proejct Owner的ODPS Project的数据,

        或者操作者为ODPS Table的创建者。

          赋权的过程如下:

          a) 在用户A的ODPS中,添加用户B

          b) 在用户A的ODPS中,给用户B赋权:比如建表、查询等的权限

          c) 使用用户B登录ODPS,然后切换到用户A的项目空间下

          d) 切换之后,建立表TableA

          e) 将A的ODPS中的数据导入到TableA

          f) 然后执行批量导入

        这些步骤还是 挺麻烦的,不过是可以将不同用户下的数据导入到ADS中的

4 总结

      在导入过程中 ,出现问题最多的就是权限问题。

时间: 2024-11-08 19:53:19

向分析型数据库ADS中导入数据的相关文章

从分析性数据库ADS中导出数据

ADS是阿里云提供的分析性数据库,实现百亿数据毫秒级计算. 将ADS中的数据导出,有2种思路,通过select或dump实现.这两种方法各有优缺点. select导出 因为ADS支持MySQL客户端,通过客户端,可以编写select进行数据导入. 在这个过程中需要解决1个问题: select在公共云上查询的返回行数最大为10000行,所以无法通过select无法一次获取所有的数据 如果想通过分区的方式,分多次,一次10000行将数据导出,需要解决分区的问题: limit语法只支持[0,n],不支

分析型数据库+数据传输,构建企业级实时数仓

什么是实时数仓 传统的离线数据仓库,将业务数据集中进行存储后,以固定的计算逻辑定时进行ETL 和其它建模后产出报表等应用.离线数据仓库一般采用每日或每几个小时进行一次计算的方式,计算和数据的实时性均较差,业务人员无法根据自己的即时性需要获取几分钟之前的实时数据. 而虽然软件技术和硬件的发展,实时数据仓库一类解决方案越发流行.实时数仓同时具有计算的实时性(计算在用户查询时发生,可自由变换,查询速度快),和数据的实时性(数据产生插入数仓后很短时间内既可以查询到),可以让业务人员在几秒钟甚至几百毫秒的

创建RDS到分析型数据库AnalyticDB数据实时同步

数据传输服务DTS支持RDS到分析型数据库AnalyticDB之间的数据实时同步.通过DTS提供的RDS->AnalyticDB实时同步功能,可以将将企业数据集中分析,实现企业内部各种BI.CRM.实时报表系统等. 本小节介绍如何使用数据传输服务DTS快速创建RDS(MySQL)->AnalyticDB实例之间的实时同步作业,实现RDS增量数据到AnalyticDB的数据实时同步. 支持功能 支持同一个阿里云账号下RDS(MySQL)->AnalyticDB实例的数据实时同步. 支持不同

分析型数据库实时写入功能全面开放

阿里云分析型数据库为客户提供了百亿级海量数据下的毫秒级OLAP查询与分析能力.除了可以通过内建API.阿里云数据集成等途径方便的批量导入大量数据外,分析型数据库目前开放了通过insert/delete sql直接写入或删除数据的功能. 通过insert/delete提交的数据变更,一般可以在30s-60s之间就可以查询到.在最佳实践上,如果想达到最高的写入性能,在网络带宽允许的情况下(参考带宽:一个c1 ECU 2MB/s,一个c8 ECU 8MB/s),可以每个insert中进行批量提交30-

一分钟了解阿里云产品:分析型数据库

一.             概述   阿里云产品种类繁多,今天让我们一起来了解下分析型数据库(Analytic DB)吧!   什么是分析型数据库呢?   分析型数据库是阿里巴巴自主研发的海量数据实时高并发在线分析(Realtime OLAP)云计算服务,使得您可以在毫秒级针对千亿级数据进行即时的多维分析透视和业务探索.分析型数据库对海量数据的自由计算和极速响应能力,能让用户在瞬息之间进行灵活的数据探索,快速发现数据价值,并可直接嵌入业务系统为终端客户提供分析服务.     分析型数据库帮您实

数据进入阿里云数加-分析型数据库AnalyticDB(原ADS)的N种方法

从  https://yq.aliyun.com/articles/68208?spm=0.0.0.0.HEVojb&do=login  转载. 数据进入AnalyticDB(原ADS)的N种方法   分析型数据库(AnalyticDB)是阿里巴巴自主研发的海量数据实时高并发在线分析(Realtime OLAP)云计算服务,用户可以在毫秒级针对千亿级数据进行即时的多维分析透视和业务探索. 想使用阿里云分析型数据,对于大多数人首先碰到的问题就是数据如何进入到分析型数据库中.按照分析型数据库数据表的

数加分析型数据库:让你的数据探索更灵活、准确、快速响应和高并发

在大数据时代,大家越来越注重数据探索的灵活性.准确性.快速响应和高并发.为此,阿里云数加团队在结合多年应用经验的基础上,推出了分析型数据库. 什么是分析型数据库? 分析型数据库(Analytic DB,原名ADS),是阿里巴巴自主研发的海量数据实时高并发在线分析(Realtime OLAP)云计算服务,能让用户可以在毫秒级针对千亿级数据进行即时的多维分析透视和业务探索.分析型数据库对海量数据的自由计算和极速响应能力,能让用户在瞬息之间进行灵活的数据探索,快速发现数据价值,并可直接嵌入业务系统为终

用好阿里云分析型数据库大存储实例,大幅降低大数据应用成本

在企业的业务中,经常拥有海量的历史结构化数据,虽然不会高频度的使用,但是不排除会不定期的被检索.查询(检索频率一般在100-1000次每天).如物联网.交易历史详单查询.监控/日志数据检索等场景.这时企业需要廉价的存储计算方案,但是又不能将数据存储于离线计算系统或归档到对象存储系统,就需要使用分析型数据库的大存储实例了. SATA.SSD.内存分析混合存储,提供低廉的存储成本(不同规格从0.093元/GB/天到0.051元/GB/天),仅为分析型数据库高性能实例的1/10,而又通过先进的动态二级

sqlite-如何将导入到数据库表中的数据保存在程序中,而不用每次换调试机时还得重新导入数据

问题描述 如何将导入到数据库表中的数据保存在程序中,而不用每次换调试机时还得重新导入数据 如题:我有一张excel的表,我将其存为.csv文件,然后通过dos命令下的sqlite3命令导入到了数据库表中,问题是如果不换机子,导入到该数据库表中的数据永久有效.如果我换机子调试的话,该数据库表中的数据就不存在了,会报错,请问有没有解决办法?谢谢! 解决方案 最好存入远程数据库每次启动同步下来数据就可以了,sqlite是系统自带的数据库具体的就是http://blog.csdn.net/tianyit