5

この記事DataFrameでは、Spark の は と同等であると主張していますDataset[Row]が、このブログ投稿DataFrameでは にスキーマがあることを示しています。

RDD をaに変換するブログ投稿の例を見てみましょうDataFrameDataFrameDataset[Row]RDDDataFrame

val rddToDF = rdd.map(value => Row(value))

しかし、代わりにそれがこれであることを示しています

val rddStringToRowRDD = rdd.map(value => Row(value))
val dfschema = StructType(Array(StructField("value",StringType)))
val rddToDF = sparkSession.createDataFrame(rddStringToRowRDD,dfschema)
val rDDToDataSet = rddToDF.as[String]

明らかに、データフレームは実際には行とスキーマのデータセットです。

4

2 に答える 2

2

( T Gawedaの回答に加えて)各Row( )に関連付けられたスキーマがあることに注意してくださいRow.schemaDataFrameただし、このスキーマは(またはDataset[Row])に統合されるまで設定されません。

scala> Row(1).schema
res12: org.apache.spark.sql.types.StructType = null

scala> val rdd = sc.parallelize(List(Row(1)))
rdd: org.apache.spark.rdd.RDD[org.apache.spark.sql.Row] = ParallelCollectionRDD[5] at parallelize at <console>:28
scala> spark.createDataFrame(rdd,schema).first
res15: org.apache.spark.sql.Row = [1]
scala> spark.createDataFrame(rdd,schema).first.schema
res16: org.apache.spark.sql.types.StructType = StructType(StructField(a,IntegerType,true))
于 2016-10-07T18:30:28.823 に答える