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

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

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

  1. df.write.format("jdbc") \
  2. .option("url", "jdbc:ignite:thin://<ignite ip>") \
  3. .option("driver", "org.apache.ignite.IgniteJdbcThinDriver") \
  4. .option("primaryKeyFields", 'id') \
  5. .option("dbtable", "ignite") \
  6. .mode("overwrite") \
  7. .save()
  8. # .option("createTableOptions", "primary key (id)") \
  9. # .option("customSchema", 'id BIGINT PRIMARY KEY, txt TEXT') \

我有个错误:

  1. 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#

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

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

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

相关问题