如何在空的Spark数据帧中添加特殊情况行?



我想创建一个数据帧,该数据帧只有一个行,其默认值基于列的类型(字符串类型,整数类型等(。像这样:

// +----+----+
// |col1|col2|
// +----+----+
// |  -1| n/a|
// +----+----+

我该怎么做?

或者,我认为只有一行空值就足够了,然后我可以应用我编写的以下函数:

def addNaRow(df: DataFrame): DataFrame = {
val emptyDf = spark.createDataFrame(sc.emptyRDD[Row], df.schema)
val rowDf = df.schema.foldLeft(df)
{ (accDf, col) =>
col.dataType match {
case IntegerType =>
accDf.withColumn(col.name, lit(-1))
case StringType =>
accDf.withColumn(col.name, lit("n/a"))
// TODO add cases with other types
}
}
rowDf.union(df)
}

你可以这样做:

def addNaRow(df: DataFrame, spark: SparkSession): DataFrame = {
val df1 = spark.range(1).select(df.schema.map(s => s.dataType match {
case IntegerType => lit(-1).alias(s.name)
case StringType => lit("n/a").alias(s.name)
}):_*)
df.union(df1)
}

相关内容

  • 没有找到相关文章