代码示例Common operations代码仓库

注意:以下翻译的准确性尚未经过验证。这是使用 AIP ↗ 从原始英文文本进行的机器翻译。

代码仓库

Python

在PySpark中创建稳定的主键

此代码在PySpark中使用concat_ws()sha2()函数,通过连接多个列并非必填地对结果进行哈希处理来创建稳定且唯一的主键。这种方法确保主键是稳健的、稳定的,并能有效地唯一标识数据集中的行。

主键应该是唯一的、非空的和稳定的。使用非确定性或不稳定的主键,如单调递增的ID或随机数,可能导致若干问题:

  1. Object识别:Ontology中的Object由其主键识别。如果每次搭建的支持数据集生成新的ID集,Object的编辑可能会丢失。
  2. 更改跟踪:如果主键不稳定和可重现,跟踪数据集和行的更改将变得困难。
  3. 管道一致性:生成主键的管道的增量运行或依赖于数据集的下游管道可能导致重复和其他不一致。

创建主键的一个良好实践是使用数据集中可以唯一标识每一行的列的组合。例如,在一个出勤数据集中,student IDdate列的组合可以唯一标识每一行。

下面是一个示例代码片段,用于为一个数据集生成主键,其中每一行都由列A、B和C唯一标识。concat_ws()函数用于连接,而sha2()函数可选地确保每个键具有相同的长度和格式。

Copied!
1 2 3 4 5 6 7 from pyspark.sql import functions as F # 将所有列连接成一个字符串 df = df.withColumn("primary_key", F.concat_ws(":", "A", "B", "C")) # 可选步骤:创建一个哈希值以确保所有键具有相同的长度和格式 df = df.withColumn("primary_key", F.sha2(F.col("primary_key"), 256))

通过遵循这些最佳实践,您可以确保主键在数据集中是稳健、稳定且有效的,能够唯一标识行。

语言: Python

  • 提交日期: 2024-09-16
  • 标签: pyspark, dataframe