TiSpark 批量写入TiDB,pyspark可否批量写入TiDB

https://github.com/pingcap/tispark/wiki/PySpark
参考一下官方的说明,其中:

TiSpark 版本 Spark 版本 是否需要 pytispark
< 2.0 < 2.3 :white_check_mark:
2.4.x 2.3.x 2.4.x pyspark :negative_squared_cross_mark: spark-sumbit :white_check_mark:
2.5.x > 3.0 :negative_squared_cross_mark:

简单来说,
tispark < 2.0和spark < 2.3,必须使用pytispark
tipsark 2.4.x 和 spark 2.3.x 2.4.x 在spark-sumbit情况下使用pytispark,其他情况直接使用
tipsark 2.5.x 和 spark > 3.0 直接使用

tipsark 2.5.x 和 spark > 3.0,参考代码如下:

  1. 配置 spark-defaults.conf
spark.sql.extensions  org.apache.spark.sql.TiExtensions
spark.tispark.pd.addresses  ${your_pd_adress}
spark.sql.catalog.tidb_catalog  org.apache.spark.sql.catalyst.catalog.TiCatalog
spark.sql.catalog.tidb_catalog.pd.addresses  ${your_pd_adress}
  1. 启动 pyspark
pyspark --jars tispark-assembly-{version}.jar
  1. Read
spark.sql("use tidb_catalog")
spark.sql("select count(*) from ${database}.${table}").show()
  1. Write
df1 = spark.sql("select * from ${src_database}.${src_table}").show()

df1.write
.format("tidb")
.option("database", ${target_database})
.option("table", ${target_table})
.option("tidb.addr","127.0.0.1")
.option("tidb.password","")
.option("tidb.port","4000")
.option("tidb.user","root")
.mode("append")
.save()