我想在我的数据帧中添加一个具有生成id的列。我试过:
uuidUdf = udf(lambda x: str(uuid.uuid4()), StringType())
df = df.withColumn("id", uuidUdf())
但是,当我这样做时,我的输出目录中不会写入任何内容。当我删除这些行时,一切正常,所以肯定有一些错误,但我在控制台中看不到任何东西。在
我尝试过使用单调的\u递增的\u id()来代替生成UUID,但是在我的测试中,这会产生很多重复的结果。我需要一个唯一的标识符(不一定是UUID)。在
我该怎么做?在
Tags:
请使用
lit
函数,以便为所有记录生成相同的id。lit
只执行一次函数并获取列值并将其添加到每个记录中。在使用
^{pr2}$udf
并不能解决函数的问题,因为它对每一行都会被调用,我们最终会为每个调用获得新的uuid。在请试试这个:
注意:您应该在添加新列之后分配给新的DF。(Df1=Df.WITH列(…)
相关问题 更多 >
编程相关推荐