修改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 和关联的序列号。
散列键也与数据帧相关联。
分割定长位置后加入了那两个
创建了具有以下架构的数据集
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 和关联的序列号。
散列键也与数据帧相关联。
分割定长位置后加入了那两个