csv容易崩溃 文件坏掉的数据类型_通过Datahub将本地的CSV文件导入Tablestore

前言

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

原理介绍

为什么选择Datahub

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

数据模型转换介绍

62efe8e5e6c6e25b177fa04cb7e088a7.png

一个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实例参考文档

b8e23d427f42b4ae1f66690046c08fd0.png

设计主键、建表

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

d400d5923729582a3861c66610556183.png

Datahub资源准备

创建Project

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

创建Topic

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

e364e6f641afe19201a5d23975412f8c.png

Datahub数据中转

csv上传Datahub

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

bb31c0508c575a5bf05cc396c3a29083.png

创建connector导入Tablestore

首先对datahub访问Tablestore进行授权授权链接,然后进入准备好的topic的详情页面选择“+DataConnector”--“同步到Tablestore”填写Tablestore的资源信息完成数据导入。

ae5347096a643e97478ad2c73ad9db26.png

7cfed50f523a06567fd9a7a33661ec2e.png

(Tablestore Endpoint 使用实例的私网地址)

进入表详情页面选择“数据管理”--“查询数据”,可以查看导入的10行数据完整信息

8d96d76b19fe0de32c19c705531c34a8.png

注意:文件数据导入为一次性操作,文件无改变情况重复导入,因为主键相同数据将被覆盖从时间戳可以看到数据已更新;若文件部分更新后再次导入,主键重复的数据依旧会被重写,新的数据正常写入。

计量计费

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值