2017-05-02 9 views
1

私のデータは、このようなものです:jsonファイルを読み込んでデータフレームを作成せずにデータフレームを作成するには、いくつかの列にnull値がありますか?

{"id":"1","time":123,"sth":100} 
{"id":"2","sth":456} 
{"id":"3","time":789,"sth":300} 

そして、私のように私のスキーマを記述します。

StructType(
    Array(
    StructField("id", StringType, false), 
    StructField("time", StringType, false), 
    StructField("sth", StringType, true), 
) 
) 

そして、私が使用して自分のデータを読み込む:

val df = spark.read.schema(buildSchema()).json(path) 

私は何をしたいことは、私のデータフレームということです"時間"の値を持たない行は読み込まないので、結果は

です| id |時間| sth |
| 1 | 123 | 100 |
| 3 | 789 | 300 |

しかし、私はStructFieldでnull可能な属性をfalseに設定しても、それでも2行目のテーブルには​​が読み込まれています。読み込んだ後にnull値でこれらの行を削除する必要があります。私が効率的にしたいことをする方法はありますか?あなたはこれを試すことができ

+0

の可能性のある重複した[DataFrameReadercsv(パス:文字列)空白行をスキップするオプション](http://stackoverflow.com/questions/43476254/dataframereadercsvpath-string-option-空白行をスキップする) – mtoto

答えて

4

val otherPeopleRDD = spark.sparkContext.makeRDD(
      """[{"id":"1","time":123,"sth":100} , 
     {"id":"2","sth":456} , 
     {"id":"3","time":789,"sth":300} ] """ :: Nil) 


     val otherPeople = spark.read.json(otherPeopleRDD).na.drop() 
     otherPeople.show() 


+---+---+----+ 
| id|sth|time| 
+---+---+----+ 
| 1|100| 123| 
| 3|300| 789| 
+---+---+----+ 
関連する問題