gpt4 book ai didi

scala - 使用 Scala 在数据框中添加序列号列

转载 作者:行者123 更新时间:2023-12-01 10:27:45 25 4
gpt4 key购买 nike

下面是在数据框中添加序列号列的逻辑。当我从分隔文件中读取数据时,它按预期工作。今天我有一个新任务从oracle表中读取数据并添加序列号并进一步处理。当我从 oracle 表中读取数据帧时,我面临以下逻辑问题,即在数据框中添加序列号。

oracleTableDF is my dataframe


   //creating Sequence no. logic for SeqNum
val rowRDD = oracleTableDF.rdd.zipWithIndex().map(indexedRow => Row.fromSeq((((indexedRow._2.toLong+1)).toLong) +: indexedRow._1.toSeq))

//creating StructType to add Seqnum in schema
val newstructure = StructType(Array(StructField("SeqNum",LongType)).++(oracleTableDF.schema.fields))

//creating new Data Frame with seqnum
oracleTableDF = spark.createDataFrame(rowRDD, newstructure)

我无法找到实际问题。因为当我从文件中读取逻辑时,它在集群中按预期工作。但是当我从 oracle table 读取它时遇到了一些问题。它也在本地模式下按预期工作。

below is the error :

"ERROR scheduler.TaskSetManager: Task 0 in stage 1.0 failed 4 times; aborting job org.apache.spark.SparkException: Job aborted due to stage failure: Task 0 in stage 1.0 failed 4 times, most recent failure: Lost task 0.3 in stage 1.0 (TID 4, xxxx, executor 1): java.lang.NoClassDefFoundError: Could not initialize class oracleDataProcess$"

最佳答案

如果您只需要使用自动递增整数值向数据框中添加一列,则可以使用 monotonicallyIncreasingId这是 LongType :

val oracleTableDF2 = oracleTableDF.withColumn("SeqNum", monotonicallyIncreasingId)

[更新]

请注意 monotonicallyIncreasingId已弃用。 monotonically_increasing_id()应该改用。

关于scala - 使用 Scala 在数据框中添加序列号列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46149567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com