Spark dataset导入tidb方式咨询

我们目前使用的spark的jdbc进行导入,速度慢而且集群压力大。
tispark只支持数据的导出,tispark的batch write方式相比spark jdbc方式有什么优化吗?

最初 TiSpark 只能通过 TiDB JDBC 的方式将数据写入到 TiDB ,这存在可扩展性问题,将 TiSpark 直接写入 TiKV 则可以解决此问题。在 Spark 中数据一般是以 DataFrame 的形式存在, TiSpark 写入过程中可以将 DataFrame 的数据转化为 TiKV 认识的格式,并通过 TiKV Java Client 将数据写入 TiKV。

  • 根据 DataFrame 中数据进行 Region 预切分和分配
  • TiKV 数据写入需要支持分布式事务, TiKV 采用 Percolator 协议进行事务操作,操作过程如下:
    • 在 Spark Driver 端开始写数据时申请 TiKV 中主数据预写,对此条数据加锁。
    • 在 Spark Executor 端将 DataFrame 转化为 TiKV 的 KV Pair 格式,并调用 gRPC 进行次数据预写,将 DataFrame 数据存入到 TiKV , 此过程如果存在写入冲突可以选择报错或者覆盖写入。
    • 在 Spark Driver 端等待 Spark Executor 预写成功,再将主数据提交。 Percolator 提交成功取决于主数据提交状态。
    • 在 Spark Excutor 端提交次数据。到此完成了所有两阶段事务提交。

引用自 《TiDB-in-Action》 https://book.tidb.io/session1/chapter11/tispark-architecture.html

多谢! batchwrite方式目前生产环境可用吗?什么版本开始可用呢?

hello~ 刚才确认了一下,目前 batch write 要等到 v4.0 发布以后才能用。batch write 依赖 TiDB v4.0 的一些功能,所以这个可以再等等。如果的确需要批量导入海量数据,例如 TB 级别数据,可以试试 Mydumper/Lightning

Lightning导入数据过程中,tidb集群无法对外提供服务吗?已有的其他表,也无法提供服务吗?

Lightning支持hdfs的csv文件吗?

支持 csv 文件导入,麻烦看下官网
https://pingcap.com/docs-cn/stable/reference/tools/tidb-lightning/csv/#csv

请问tidb 4.0预计什么时候发布呢?

+1 ,我们这边希望有快速写入的功能,但是lightning看是集群不能对外提供服务的。不知道还有什么方式可以导入海量数据

4.0 GA 的版本发版时间大概在五月底,近期发版情况可以参考该链接:https://github.com/pingcap/tidb/milestones

多谢大佬! 请问可以用batchwrite的tispark版本也会随tidb 4.0一起发布吗? 需要的spark最低版本是什么呢?

应该在 4.0 发版之后,目前 AP 研发组同学都在全力支持 tiflash。

请问新的tispark发版有计划时间吗?

咨询了下研发同学 TiSpark 应该会在 4.0GA 的时候发布一个新版本,大概在五月底,后续可以关注下 https://github.com/pingcap/tispark/releases

多谢!!这个需要spark的什么版本呢?

您好 2.3,2.4 都可以的

2.1呢?

2.1的spark不支持batch write。

此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。