【问题标题】:Adding unique ID for each row in scala dataframe for multiple insertions为scala数据框中的每一行添加唯一ID以进行多次插入
【发布时间】:2020-12-12 20:38:46
【问题描述】:

我正在尝试为我的 scala 数据框中的每一行设置唯一 ID,因此我可以将 databricks 笔记本中的数据框插入 SQL DB。

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

这适用于第一次提取到 SQL DB 中。但是当我尝试摄取新数据时,我收到重复键错误“重复键值是..XXXX”

如何克服为每个 SQL 摄取生成唯一键?谢谢。

【问题讨论】:

    标签: sql scala apache-spark apache-spark-sql


    【解决方案1】:

    而不是自己手动添加标识符(我想这是失败的,因为monotonicallyIncreasingId 总是从 0 开始,即使它已经存储在您要保存到的数据库中)您可以添加一个自动递增标识符列到您正在保存的数据库的架构。每个 RDBMS 都有自己的方式来允许您这样做,this page 展示了如何在选择的 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)
    );
    

    保存数据框时,您不需要指定自动递增标识符(即在上面的示例中,您的数据框应该只包含LastNameFirstName 和 `Age~

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-14
      • 1970-01-01
      • 2015-09-03
      • 2018-07-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多