小编Los*_*ssa的帖子

如何删除Delta表中的重复项?

有一个函数可以从 Delta 表中删除数据:

deltaTable = DeltaTable.forPath(spark, "/data/events/")
deltaTable.delete(col("date") < "2017-01-01")
Run Code Online (Sandbox Code Playgroud)

但有没有办法以某种方式删除重复项?就像 deltaTable.dropDuplicates()...

我不想将整个表作为数据帧读取,删除重复项,然后再次将其重写到存储中

duplicates apache-spark delta-lake

9
推荐指数
2
解决办法
2万
查看次数

追加到 PySpark 数组列

我想检查列值是否在某些边界内。如果不是,我将向数组列“F”附加一些值。这是我到目前为止的代码:

df = spark.createDataFrame(
    [
        (1, 56), 
        (2, 32),
        (3, 99)
    ],
    ['id', 'some_nr'] 
)

df = df.withColumn( "F", F.lit( None ).cast( types.ArrayType( types.ShortType( ) ) ) )

def boundary_check( val ):
  if (val > 60) | (val < 50):
    return 1

udf  = F.udf( lambda x: boundary_check( x ) ) 

df =  df.withColumn("F", udf(F.col("some_nr")))
display(df)
Run Code Online (Sandbox Code Playgroud)

但是,我不知道如何附加到数组。目前,如果我对 df 执行另一次边界检查,它将简单地覆盖“F”中以前的值...

arrays append apache-spark apache-spark-sql pyspark

7
推荐指数
1
解决办法
2万
查看次数