修改udf以在databricks spark scala中显示超过99999的值

Modify udf to display values beyond 99999 in databricks spark scala

创建了具有以下架构的数据集

org.apache.spark.sql.Dataset[Records] = [value: string, RowNo: int]

这里的值字段是固定长度的位置,我想将其转换为单独的列并使用 UDF 添加 RowNo 作为最后一列。

def ReadFixWidthFileWithRDD(SrcFileType:String, rdd: org.apache.spark.rdd.RDD[(String, String)], inputFileLength: Int = 6): DataFrame = {

    val postapendSchemaRowNo=StructType(Array(StructField("RowNo", StringType, true)))
    val inputLength =List(inputFileLength)

    val FileInfoList = FixWidth_Dictionary.get(SrcFileType).toList
    val fileSchema = FileInfoList(0)._1
    val fileColumnSize = FileInfoList(0)._2
    val fileSchemaWithFileName = StructType(fileSchema++postapendSchemaRowNo)
    val fileColumnSizeWithFileNameLength = fileColumnSize:::inputLength
    val data = rdd

    var retDF = spark.createDataFrame(data.map{ x =>; 
                lsplit(fileColumnSizeWithFileNameLength,x._1+x._2)},fileSchemaWithFileName )
  retDF
}

现在在上面的函数中,我想使用数据集而不是 Rdd,因为我的 RowNo 不显示超过 99999 的值。

有人可以提出替代方案吗

我找到了解决方案。

我已经在数据框中创建了一个 Hashkey 和关联的序列号。

散列键也与数据帧相关联。

分割定长位置后加入了那两个