sql - 为scala数据框中的每一行添加唯一ID以进行多次插入
问题描述
我正在尝试为我的 scala 数据框中的每一行设置唯一 ID,因此我可以将 databricks 笔记本中的数据框插入 SQL DB。
val df2 = df1.withColumn("unique_ID",monotonicallyIncreasingId)
这适用于第一次摄取到 SQL DB。但是当我尝试摄取新数据时,我收到重复键错误“重复键值是..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~
推荐阅读
- swift - 通过 isActive 的 NavigationLink 推送被立即解除
- python - 我的烧瓶应用程序登录无法正常工作
- python - 如何使用 tensorflow 解决 reset_default_graph() 错误?
- docker - OpenAM:Web 策略代理登录到 OpenAM 失败
- clickhouse - 在使用clickhouse-jdbc的时候,查询数据的时候偶尔会遇到这个错误,不知道是什么原因?
- python - URL 中的数字组合
- c# - 如何为 I/O 操作(如 API 请求)实现异步和并行(以非阻塞方式)?
- java - HBASE 错误:无法识别的 VM 选项“UseConcMarkSweepGC”
- laravel - 如何使用 guzzle Http 在 laravel 中一键发送多个文件
- go - Goroutine 创建设计模式