通过Datahub将本地的CSV文件导入Tablestore-阿里云开发者社区

开发者社区> 阿里云存储服务> 正文

通过Datahub将本地的CSV文件导入Tablestore

简介: 前言 Tablestore是一款NoSQL多模型数据库,可提供海量结构化数据存储以及快速的查询和分析服务。如何将数据导入Tablestore,可以通过SDK/API、控制台、命令行工具直接写入、或者使用离线数据迁移工具DataX等。

前言

Tablestore是一款NoSQL多模型数据库,可提供海量结构化数据存储以及快速的查询和分析服务。如何将数据导入Tablestore,可以通过SDK/API、控制台、命令行工具直接写入、或者使用离线数据迁移工具DataX等。本文介绍另外一种本地数据快速导入Tablestore的途径:通过Datahub将本地的CSV文件导入Tablestore,希望能给大家接入和使用Tablestore提供新思路。

原理介绍

为什么选择Datahub

Datahub是专注于流数据处理的平台,提供对流式数据的发布,订阅和分发功能。通过Datahub可以轻松构建基于流式数据的分析和应用。要将本地csv文件中的数据导入Tablestore我们当然可以用现已发布的SDK写一个数据导入的tool实现,选择Datahub因为它专注于做数据通道服务。首先Datahub提供了更丰富的数据接入方式如这篇文章介绍的从csv文件接入和后面将介绍的从Logstash接入等,其次Datahub从优化消费体验降低使用难度上扩展了订阅、协同消费等功能,使数据的消费逻辑更清晰简明。

数据模型转换介绍

01_jpeg

一个csv文件对应Datahub中Project下的一个Topic,对应Tablestore中实例下的一张表。直观来看支持以行为单位固定列数且固定列属性的数据模型,数据导入Tablestore前行内所有的列都是属性列无差别,数据导入Tablestore后区分主键列和属性列,通过主键对行数据进行查询、更新等操作,所以csv文件中应将能作为主键的列放在行首。注意:csv中每列在Topic创建时均需一一对应定义,列数不一致或数据类型不相符文件将无法识别上传;主键列属性(列名称、列值的类型)在Datahub和Tablestore中也需要一一对应。

导入实践

csv文件准备

每行数据对应Tablestore表中的一行数据,行内列以逗号分隔,若将导入的Tablestore表设置了n个主键则靠前的n列对应主键列,其余对应属性列。

'pk001',1,'aaa','bbb','ccc','ddd','111','222','333'
'pk002',2,'aaa','bbb','ccc','ddd','111','222','333'
'pk003',3,'aaa','bbb','ccc','ddd','111','222','333'
'pk004',4,'aaa','bbb','ccc','ddd','111','222','333'
'pk005',5,'aaa','bbb','ccc','ddd','111','222','333'
'pk006',6,'aaa','bbb','ccc','ddd','111','222','333'
'pk007',7,'aaa','bbb','ccc','ddd','111','222','333'
'pk008',8,'aaa','bbb','ccc','ddd','111','222','333'
'pk009',9,'aaa','bbb','ccc','ddd','111','222','333'
'pk010',10,'aaa','bbb','ccc','ddd','111','222','333'

注意:目前Datahub仅支持列值所有数据类型(String, Bigint, Double,Boolean,Decimal,Timestamp)均以String类型写入Tablestore,“用户选择是否开启保留数据类型“的选项已在开发中,最大程度保障数据类型写入Tablestore的过程不失真。

Tablestore资源准备

创建实例

使用控制台创建Tablestore实例参考文档
02

设计主键、建表

将csv文件中九列属性列的前两列设置为主键列类型为string,名称为"pk1、pk2"(最多支持四个主键列),Tablestore支持同一个属性列的值可以有多种数据类型,故无需指定属性列类型,新建表参考文档
03_jpeg

Datahub资源准备

创建Project

使用控制台创建Datahub的Project参考文档

创建Topic

在已创建的Project下创建Topic,选择tuple类型,在schema下添加九个列的列名及类型,需要注意topic的前两个列对应Tablestore表中的主键列,需要保持列名和类型相同。目前只支持1M以下文件的上传故分片(shard)选择默认的1个即可(Datahub中单shard支持最高每日8000万Record级别的写入量)。
04_jpeg

Datahub数据中转

csv上传Datahub

datahub支持csv文件的一键上传,在topic详情页面选择“数据采集”--“文件上传”,选择目的topic和上传文件的路径完成数据上传。
05

创建connector导入Tablestore

首先对datahub访问Tablestore进行授权授权链接,然后进入准备好的topic的详情页面选择“+DataConnector”--“同步到Tablestore”填写Tablestore的资源信息完成数据导入。
06
07
(Tablestore Endpoint 使用实例的私网地址)
进入表详情页面选择“数据管理”--“查询数据”,可以查看导入的10行数据完整信息
09
注意:文件数据导入为一次性操作,文件无改变情况重复导入,因为主键相同数据将被覆盖从时间戳可以看到数据已更新;若文件部分更新后再次导入,主键重复的数据依旧会被重写,新的数据正常写入。

计量计费

目前Datahub尚在公测期间,数据导入Datahub不收取费用,使用限制见Datahub产品概述,数据从Datahub导入Tablestore是通过“BatchWriteRow”接口,计费方式与直接写入Tablestore相同。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

阿里云存储基于飞天盘古2.0分布式存储系统,产品多种多样,充分满足用户数据存储和迁移上云需求。

官方博客
链接