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到大佬困惑的点,这个参数的含义可能需要官方给我们做一些释疑,不然容易有理解偏差
redgame
(Ti D Ber Pa Amoi Ul)
5
那可能将spark.tispark.replica_read参数设置为follower,会导致数据不一致
en, 我觉得还是请宇航大佬指点一下比较妥 @shiyuhang0
应该是设计的时候没有考虑好,我觉得这个参数不应该影响写入。
提了一个 issue,https://github.com/pingcap/tispark/issues/2756。
但这个问题很好规避 fix 不是很急,我有空再搞一下,或者大家有兴趣也可以贡献
此话题已在最后回复的 60 天后被自动关闭。不再允许新回复。