Spark建立空的DataFrame

z_paul發表於2021-09-09

原創地址:

前言

本文主要給出Spark建立空的DataFrame的程式碼示例,這裡講的空的DataFrame主要指有列名(可以自己隨意指定),但是沒有行的DataFrame,因為自己在開發過程中有這個需求,之前並不知道怎麼建立,就查了一下,發現資料並不多,不知道因為太簡單還是用的人少,至於具體什麼需求就不闡述了,主要給有這方面需求的小夥伴參考一下。還有另一種空的DataFrame就是沒有任何行任何列的DataFrame,不知道有什麼用,反正貼在程式碼裡,萬一有人用呢

1、程式碼

程式碼較簡單,如下

package com.dkl.leanring.spark.dfimport org.apache.spark.sql.SparkSessionimport org.apache.spark.sql.types._import org.apache.spark.sql.Rowimport org.apache.spark.rdd.EmptyRDD/**
 * Spark建立空DataFrame示例
 */object EmptyDataFrame {  def main(args: Array[String]): Unit = {    val spark = SparkSession.builder().appName("EmptyDataFrame").master("local").getOrCreate()    /**
     * 建立一個空的DataFrame,代表使用者
     * 有四列,分別代表ID、名字、年齡、生日
     */
    val colNames = Array("id", "name", "age", "birth")    //為了簡單起見,欄位型別都為String
    val schema = StructType(colNames.map(fieldName => StructField(fieldName, StringType, true)))    //主要是利用了spark.sparkContext.emptyRDD
    val emptyDf = spark.createDataFrame(spark.sparkContext.emptyRDD[Row], schema)

    emptyDf.show    /**
     * 也可以給每列指定相對應的型別
     */
    val schema1 = StructType(      Seq(        StructField("id", IntegerType, true),        StructField("name", StringType, true),        StructField("age", IntegerType, true),        StructField("birth", StringType, true)))    val emptyDf1 = spark.createDataFrame(spark.sparkContext.emptyRDD[Row], schema1)
    emptyDf1.show    //還有一種空的DataFrame,沒有任何行任何列
    spark.emptyDataFrame.show

    spark.stop()
  }

}

2、結果

圖片描述



作者:董可倫
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/75/viewspace-2811956/,如需轉載,請註明出處,否則將追究法律責任。

相關文章