我们目前使用的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支持hdfs的csv文件吗?
请问tidb 4.0预计什么时候发布呢?
+1 ,我们这边希望有快速写入的功能,但是lightning看是集群不能对外提供服务的。不知道还有什么方式可以导入海量数据
多谢大佬! 请问可以用batchwrite的tispark版本也会随tidb 4.0一起发布吗? 需要的spark最低版本是什么呢?
应该在 4.0 发版之后,目前 AP 研发组同学都在全力支持 tiflash。
请问新的tispark发版有计划时间吗?
多谢!!这个需要spark的什么版本呢?
您好 2.3,2.4 都可以的
2.1呢?
2.1的spark不支持batch write。
此话题已在最后回复的 1 分钟后被自动关闭。不再允许新回复。