Mari kita asumsikan Anda menginginkan bingkai data dengan skema berikut:
root
|-- k: string (nullable = true)
|-- v: integer (nullable = false)
Anda cukup menentukan skema untuk bingkai data dan menggunakan kosong RDD[Row]
:
import org.apache.spark.sql.types.{
StructType, StructField, StringType, IntegerType}
import org.apache.spark.sql.Row
val schema = StructType(
StructField("k", StringType, true) ::
StructField("v", IntegerType, false) :: Nil)
// Spark < 2.0
// sqlContext.createDataFrame(sc.emptyRDD[Row], schema)
spark.createDataFrame(sc.emptyRDD[Row], schema)
Setara PySpark hampir identik:
from pyspark.sql.types import StructType, StructField, IntegerType, StringType
schema = StructType([
StructField("k", StringType(), True), StructField("v", IntegerType(), False)
])
# or df = sc.parallelize([]).toDF(schema)
# Spark < 2.0
# sqlContext.createDataFrame([], schema)
df = spark.createDataFrame([], schema)
Menggunakan encoder implisit (hanya Scala) dengan Product
tipe seperti Tuple
:
import spark.implicits._
Seq.empty[(String, Int)].toDF("k", "v")
atau kelas kasus:
case class KV(k: String, v: Int)
Seq.empty[KV].toDF
atau
spark.emptyDataset[KV].toDF
Mulai Spark 2.0.0, Anda dapat melakukan hal berikut.
Kelas Kasus
Mari tentukan
Person
kelas kasus:Impor
spark
SparkSession implisitEncoders
:Dan gunakan SparkSession untuk membuat kosong
Dataset[Person]
:Skema DSL
Anda juga dapat menggunakan Skema "DSL" (lihat Fungsi dukungan untuk DataFrames di org.apache.spark.sql.ColumnName ).
sumber
spark.emptyDataset
modul saya tidak ada, Bagaimana cara menggunakannya? ada beberapa (benar) mirip dengan (tidak benar)val df = apache.spark.emptyDataset[RawData]
?spark
adalah nilai yang Anda buat menggunakanSparkSession.builder
bukan bagian dariorg.apache.spark
paket. Ada duaspark
nama yang digunakan. Ini adalahspark
Anda telah tersedia dispark-shell
luar kotak.sumber
Di sini Anda dapat membuat skema menggunakan StructType dalam skala dan meneruskan Empty RDD sehingga Anda dapat membuat tabel kosong. Kode berikut untuk hal yang sama.
sumber
Versi Java untuk membuat DataSet kosong:
sumber
Berikut adalah solusi yang membuat dataframe kosong di pyspark 2.0.0 atau lebih.
sumber
Ini berguna untuk tujuan pengujian.
sumber
Pada Spark 2.4.3
sumber