如何使用jdbc spark connector(to ignite)创建主键表

nkhmeac6  于 2021-05-18  发布在  Spark
关注(0)|答案(1)|浏览(639)

我尝试使用spark连接器(pyspark)将sparkDataframe保存到ignite缓存,如下所示:

df.write.format("jdbc") \
  .option("url", "jdbc:ignite:thin://<ignite ip>") \
  .option("driver", "org.apache.ignite.IgniteJdbcThinDriver") \
  .option("primaryKeyFields", 'id') \
  .option("dbtable", "ignite") \
  .mode("overwrite") \
  .save()

# .option("createTableOptions", "primary key (id)") \

# .option("customSchema", 'id BIGINT PRIMARY KEY, txt TEXT') \

我有个错误:

java.sql.SQLException: No PRIMARY KEY defined for CREATE TABLE

图书馆org.apache。ignite:ignite-spark-2.4:已安装2.9.0。我不能使用ignite格式,因为azure databricks使用的spring框架版本与org.apache中的spring框架版本冲突。ignite:ignite-spark-2.4:2.9.0. 所以我尝试使用jdbc瘦客户端。但我只能将数据读取/附加到现有缓存中。
我不能使用覆盖模式,因为我不能选择主键。有一个选择 primaryKeyFields 对于ignite格式,但它在jdbc上不起作用。jdbc customSchema 选项被忽略。这个 createTableOptions 在架构括号后添加主键语句,并出现sql语法错误。
有没有办法确定jdbc spark连接器的主键?

wfsdck30

wfsdck301#

下面是一个正确语法的示例,应该可以很好地工作:

DataFrameWriter < Row > df = resultDF
  .write()
  .format(IgniteDataFrameSettings.FORMAT_IGNITE())
  .option(IgniteDataFrameSettings.OPTION_CONFIG_FILE(), configPath)
  .option(IgniteDataFrameSettings.OPTION_TABLE(), "Person")
  .option(IgniteDataFrameSettings.OPTION_CREATE_TABLE_PRIMARY_KEY_FIELDS(), "id, city_id")
  .option(IgniteDataFrameSettings.OPTION_CREATE_TABLE_PARAMETERS(), "template=partitioned,backups=1")
  .mode(Append);

如果这里出了什么问题,请告诉我。

相关问题