TiSpark写TiDB的速度, 是不是没有Spark写Hive(HDFS) 的速度快?

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。

  • 【TiDB 版本】:v4.0.7
  • 【问题描述】:
    我看TiDB的某文档介绍,说使用TiSpark写入TiKV,400万行用了5分钟。我们是打算用TiSpark做实时数仓的。如果每次分析完,光写入数据就用5分钟的话,时效性就太差了。
    1、正常用Spark写Hive的话,400万行数据,几秒就能写完了。请问TiKV可实现这种高速的写入吗?Spark往HDFS写数据,可能是通过写文件的方式写入的,所以速度挺快的。

2、我们用的是机械硬盘,所以在进行分析的时候,磁盘的读写是瓶颈,我们目前是想通过TiSpark+TiKV解决这个问题。请问相比于使用TiSpark从HDFS中读取数据,TiSpark从Tikv中读取数据是不是会快很多?同时相比于使用TiSpark向HDFS中写数据,TiSpark从Tikv中读取数据是不是会慢很多?

  1. 对于全表扫描的场景:TiSpark从TiKV读数据应该比HDFS略慢,推荐使用TiFlash列存引擎,速度可以逼近HDFS。
  2. 对于非全表扫描的场景:情况就会比较复杂,例如能走索引的时候,TiSpark从TiKV读数据可能就会比HDFS快。
  3. TiSpark写入TiKV确实会比写HDFS要慢,400w数据应该在1分钟之内能写完,你看的资料是比较老的,目前已经做了很多优化。如果对写入速度需要优化的话,可以直接联系我 guliangliang@pingcap.com

好的,我试下,谢谢

:+1::+1::+1:

还想请教下,如果单表数据量大约在几十万行到几千万行之间,涉及到多表间复杂SQL的OLAP需求。这样的场景,算上数据的写入和写出的话,是把数据放在TiDB里,用TiSpark进行分析快,还是把数据放在HDFS里面,用Spark分析快?

可以测试一下

如果全表扫,应该HDFS会快一些