我正在尝试为我的scala数据帧中的每一行创建唯一的ID,因此我可以将databricks笔记本中的数据帧插入到SQL DB中。
val df2 = df1.withColumn("unique_ID",monotonicallyIncreasingId)
这适用于第一次摄入SQL数据库。但是当我尝试摄取新数据时,我得到了重复的密钥错误";重复的键值是..XXXX";
如何克服为每次SQL摄取生成唯一密钥的问题?谢谢
与其自己手动添加标识符(我认为这是失败的,因为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)
);
保存数据帧时,您不需要指定自动递增标识符(即,在上面的示例中,您的数据帧应该只包含LastName
、FirstName
和`Age~