tispark, insert 受 spark.tispark.replica_read 参数影响

tispark insert 操作受参数 spark.tispark.replica_read 的影响,

在 spark-default.conf 中,设定 spark.tispark.replica_read follower

然后 spark-shell 中执行 insert 就会报错,

如果把这行参数注释掉,就可以成功:

version:

Welcome to
      ____              __
     / __/__  ___ _____/ /__
    _\ \/ _ \/ _ `/ __/  '_/
   /___/ .__/\_,_/_/ /_/\_\   version 3.3.1
      /_/

Using Scala version 2.12.15 (OpenJDK 64-Bit Server VM, Java 1.8.0_292)

5.7.25-TiDB-v7.2.0

设置了这个值,应该就是直接访问了 follower 节点,raft中follower节点只支持读操作。
去掉这个配置,默认访问的就是raft的 leader 节点,leader节点支持读写操作,所以能insert

不是哦,replica_read 这个参数看名字就是控制“读”操作时候选那个节点,而不应该影响到“写”操作。tidb server 的类似参数不也是为了解决读热点问题么。不管怎么说,读“阻塞”写,这种情况出现,也是需要注意的地方吧。

tidb_replica_read 的特性确实是“只”控制“读”操作,spark.tispark.replica_read 这个参数的作用,我第一反应是tispark过来到tikv replica的操作只支持read,不支持write。

能get到大佬困惑的点,这个参数的含义可能需要官方给我们做一些释疑,不然容易有理解偏差

那可能将spark.tispark.replica_read参数设置为follower,会导致数据不一致

en, 我觉得还是请宇航大佬指点一下比较妥 @shiyuhang0

应该是设计的时候没有考虑好,我觉得这个参数不应该影响写入。
提了一个 issue,https://github.com/pingcap/tispark/issues/2756。
但这个问题很好规避 fix 不是很急,我有空再搞一下,或者大家有兴趣也可以贡献

谢谢宇航大佬~

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