[英]How to add a special-case row in a empty Spark DataFrame?
我想創建一個僅具有基於默認值(基於列的類型(StringType,IntegerType等))的行的DataFrame。 像這樣:
// +----+----+
// |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)
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.