【问题标题】:Modify udf to display values beyond 99999 in databricks spark scala修改 udf 以在 databricks spark scala 中显示超过 99999 的值
【发布时间】:2021-09-08 12:03:27
【问题描述】:

使用以下架构创建了一个数据集

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 的值。

有人可以提出替代方案

【问题讨论】:

    标签: scala apache-spark user-defined-functions databricks


    【解决方案1】:

    我得到了解决方案。

    我在数据帧中创建了一个 Hashkey 和相关的序列号。

    hashkey 也与数据帧相关联。

    我在拆分固定长度位置后加入了这两个。

    【讨论】:

      猜你喜欢
      • 2020-08-25
      • 2019-05-06
      • 2022-01-23
      • 2017-11-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-22
      • 1970-01-01
      • 2020-08-18
      相关资源
      最近更新 更多