web-dev-qa-db-ja.com

Scala Spark:文字列のリストからRDDを作成し、DataFrameに変換する方法

既存のスキーマに一致する可能性のある文字列のリストからDataFrameを作成したい。これが私のコードです。

    val rowValues = List("ann", "f", "90", "world", "23456") // fails
    val rowValueTuple = ("ann", "f", "90", "world", "23456") //works

    val newRow = sqlContext.sparkContext.parallelize(Seq(rowValueTuple)).toDF(df.columns: _*)

    val newdf = df.unionAll(newRow).show()

文字列のリストを使用すると、同じコードが失敗します。違いはrowValueTupleTupleが作成されることです。 rowValuesリストのサイズは動的に変化するため、手動でTuple*オブジェクト。これどうやってするの?何が欠けていますか?要件を満たすためにこのリストをフラット化するにはどうすればよいですか?

あなたの助けを感謝してください。

7
NehaM

DataFrameには固定列数のスキーマがあるため、可変長のリストごとに行を作成するのは自然ではないようです。とにかく、次のように既存のスキーマを使用してRDD [Row]からDataFrameを作成できます。

val rdd = sqlContext.sparkContext.parallelize(Seq(rowValues))
val rowRdd = rdd.map(v => Row(v: _*))
val newRow = sqlContext.createDataFrame(rdd, df.schema)
13