sql—为scalaDataframe中的每一行添加唯一的id以进行多次插入

uurv41yg  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(484)

我正在尝试为scalaDataframe中的每一行设置唯一的id,因此可以将datarciks笔记本中的dataframe插入sqldb。

val df2 = df1.withColumn("unique_ID",monotonicallyIncreasingId)

这适用于第一次摄取到sqldb中。但是当我尝试接收新数据时,我得到了复制键错误“复制键值是..x”
如何克服为每次sql摄取生成唯一密钥的困难?谢谢。

cyej8jka

cyej8jka1#

而不是手工添加标识符(我认为这是失败的,因为 monotonicallyIncreasingId 总是从0开始,即使它已经存储在您试图保存到的数据库中)您可能可以向正在保存的数据库的架构中添加一个自动递增的标识符列。每个rdbms都有自己的方法来实现这一点,本页将展示如何在一系列sql数据库实现上实现这一点。例如,在mysql中,您可以添加 AUTO_INCREMENT 列的限定符:

CREATE TABLE Persons (
    Personid int NOT NULL AUTO_INCREMENT,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (Personid)
);

在保存Dataframe时,您不需要指定自动递增标识符(即,在上面的示例中,您的Dataframe应该只包含 LastName , FirstName 和年龄~

相关问题