2016-04-30 22 views
1

sparkで検索語を試しています。まず、私は、SQLコンテキストを作成 apache spark DataFrame操作jsonファイルを読み取る

scala> val sqlcontext = new org.apache.spark.sql.SQLContext(sc) 

は、それから私は、JSONファイルを作成し、Scalaのパスに保管

{ 
    {"id" : "1201", "name" : "satish", "age" : "25"} 
    {"id" : "1202", "name" : "krishna", "age" : "28"} 
    {"id" : "1203", "name" : "amith", "age" : "39"} 
    {"id" : "1204", "name" : "javed", "age" : "23"} 
    {"id" : "1205", "name" : "prudvi", "age" : "23"} 
} 

ガットエラー私はこの

scala> val dfs = sqlContext.read.json("employee.json") 

エラー

dfs: org.apache.spark.sql.DataFrame = [_corrupt_record: string, age: string, id: string, name: string] 
を入力すると
+0

a)Spark JSONリーダーは、複数行でないJSON行形式をサポートしていますb)これは有効ではありませんJSON – zero323

+0

@ zero323だから何をする必要がありますか? – text

+0

最初の左括弧と最後の右括弧を最初にドロップします。 – zero323

答えて

0

JSONの人の配列は、 k個の何かのように:あなたは火花が必要になるとして、あなたはもっと何かしたいと思い、1行につき1つのJSON値をしたい場合は

{ "people": [ 
    {"id" : "1201", "name" : "satish", "age" : "25"}, 
    {"id" : "1202", "name" : "krishna", "age" : "28"}, 
    {"id" : "1203", "name" : "amith", "age" : "39"}, 
    {"id" : "1204", "name" : "javed", "age" : "23"}, 
    {"id" : "1205", "name" : "prudvi", "age" : "23"} 
    ] 
} 

:この第2のケースで

{"id" : "1201", "name" : "satish", "age" : "25"} 
    {"id" : "1202", "name" : "krishna", "age" : "28"} 
    {"id" : "1203", "name" : "amith", "age" : "39"} 
    {"id" : "1204", "name" : "javed", "age" : "23"} 
    {"id" : "1205", "name" : "prudvi", "age" : "23"} 

を、各行は有効なものですjsonドキュメント。前者の場合、全体が有効なjsonドキュメントです。あなたのケースではあなたはどちらも持っていません。 jsonを検証するツールがあります(例:クロム開発ツールのjavascriptコンソールウィンドウでjsonを解析することができます。

データモデリングの観点から見ると、現在の一時的な年齢ではなく、年齢を生年月日として表現したい場合や、少なくとも文字列ではなく数字にすることが望ましい場合もあります。

関連する問題