tincat
(Tincat)
1
为提高效率,请提供以下信息,问题描述清晰能够更快得到解决:
【TiDB 版本】
v5.0.1
【问题描述】
我们在hive中有2张表,以日期分区,每天每张表会写入1000多万条数据,已经有约1年的存量数据。我们想把这2张表同步到TiDB中方便做一些HTAP的查询。
我看了相关的文档,打算先用hive->csv->lightning全量迁移,再用TiSpark每天跑批查询hive表当天的增量后写入TiDB,但是测试TiSpark写入TiDB,发现几个问题:
- 不支持写入分区表,写入时抛出异常 tispark currently does not support write data to partition table
- 速度慢,单表1千万行数据,hive中文件为500多MB,查询并写入的job花费近1小时。不知道如何确定瓶颈。
- TiDB中数据越多,写入就越慢,而且不能分区的话如果将来要按日期删除也会很慢
请问大佬们,这种方案能否支持导入到分区表,如何确定TiSpark同步任务的瓶颈,或者还有更好的迁移同步方案吗?
若提问为性能优化、故障排查类问题,请下载脚本运行。终端输出的打印结果,请务必全选并复制粘贴上传。
tincat
(Tincat)
3
感谢回答,目前看来分区还是比较需要的,但是直接通过tidb写入的话性能更加不佳而且没有事务性
wink
(winkyao)
4
直接通过 tidb 写入,数据越多,写入越慢这个跟我们的理解有点不一致。能否有更详细的信息呢?另外你是指 TiDB 具有事务性你不需要还是说 TiDB 不具备事务性?
tincat
(Tincat)
5
我做过jdbc写入tidb测试,随着数据量增多,写入速度也会慢慢降下来,可能跟测试环境硬件资源不足有关。
另外没有事务性指的是:用TiSpark批处理写入可以保证整个批处理的事务性,不会出现写入一部分后失败的情况。如果直接通过tidb写就不保证这个事务性了。
tincat
(Tincat)
7
1.TiSpark用的是这个帖子里给的2.3.15-snapshot版本 tiflash中decimal类型的值异常
2.Spark并发已经尽量调大了,作用不大,应该是有个日期索引导致的写入热点问题,去掉日期索引只需40多分钟。
3.这个我之前搭建的TiDB4.0版本的集群上测的,用java写程序对于一张表不断插入随机生成的数据,大概从1千万到8千万这个过程,写入速度有所下降,磁盘都是机械盘290G。不过我刚刚在新的5.0集群上测没有重现这一现象。之前的TiDB4.0集群配置比较低,4核16G,现在是部在24核剩余内存100多G的spark集群机器上。
4.我的测试集群都是1个tidb,1个pd,3个tikv和1个tiflash节点的。
yilong
(yi888long)
8
如果是新的集群建议直接测试 5.0。那感觉之前的问题可能在 5.0 都解决了吧,还有哪些地方比较担心的?
tincat
(Tincat)
9
暂时没有了,还是希望TiSpark尽早支持写入分区表吧
yilong
(yi888long)
10
麻烦到这个版块提交需求,需求都会在这里收集,感谢。