scala – 如何使用指定的模式创建一个空的DataFrame?
发布时间:2020-12-16 09:38:27 所属栏目:安全 来源:网络整理
导读:我想在Scala中使用指定的模式在DataFrame上创建。我试图使用JSon阅读,我的意思是读取空文件,但我不认为这是最好的做法。 解决方法 假设你想要一个具有以下模式的数据框架: root |-- k: string (nullable = true) |-- v: integer (nullable = false) 您只
我想在Scala中使用指定的模式在DataFrame上创建。我试图使用JSon阅读,我的意思是读取空文件,但我不认为这是最好的做法。
解决方法
假设你想要一个具有以下模式的数据框架:
root |-- k: string (nullable = true) |-- v: integer (nullable = false) 您只需定义数据帧的模式,并使用空RDD [Row]: import org.apache.spark.sql.types.{ StructType,StructField,StringType,IntegerType} import org.apache.spark.sql.Row val schema = StructType( StructField("k",true) :: StructField("v",IntegerType,false) :: Nil) // Spark < 2.0 // sqlContext.createDataFrame(sc.emptyRDD[Row],schema) spark.createDataFrame(sc.emptyRDD[Row],schema) PySpark等价物几乎相同: from pyspark.sql.types import StructType,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) 使用隐式编码器(仅Scala)与产品类型如Tuple: import spark.implicits._ Seq.empty[(String,Int)].toDF("k","v") 或案例类: case class KV(k: String,v: Int) Seq.empty[KV].toDF (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |