2016-09-14 8 views
2

データフレームを作成するコードがあり、入力データに配列がない場合は正常に動作します。スキーマを作成する方法sparkでデータフレームに配列

配列を持たないJsonデータを使ってみましたが、正常に実行されました。私は、スキーマを作成する方法を、次に以下のような配列で入力されたデータを持っている場合 私のコードは

val vals = sc.parallelize(
    """{"id":"1","name":"alex"}""" :: 
    Nil 
) 

val schema = (new StructType) 
     .add("id", StringType) 
     .add("name", StringType) 


    sqlContext.read.schema(schema).json(vals).select($"*").printSchema() 

私の質問は、ありますか?

 val vals = sc.parallelize(
    """{"id":"1","name":"alex","score":[{"keyword":"read","point":10}]}""" :: 
    Nil 
) 


val schema = (new StructType) 
     .add("id", StringType) 
     .add("name", StringType) 

ありがとうございます。

+1

を解決している印刷します。あなたは何を試しましたか? – Samar

答えて

3

おかげさまで、私のコードに解決策があります。

データフレームの配列にスキーマを作成すると、このコードを実行できます。

val vals = sc.parallelize(
    """{"id":"1","name":"alex","score":[{"keyword":"read","point":10}]}""" :: 
    Nil 
) 

val schema = StructType(
     Array(
     StructField("id", StringType), 
     StructField("name", StringType), 
     StructField("score", ArrayType(StructType(Array(
      StructField("keyword", StringType), 
      StructField("point", IntegerType) 
     )))) 
    ) 
    ) 

やウェブ上のそれに非常に多くの記事がありますが、スキーマ

sqlContext.read.schema(schema).json(vals).select($"*").printSchema() 

おかげで

関連する問題