Spark-sql-json-datasets

提供:Dev Guides
移動先:案内検索

Spark SQL-JSONデータセット

Spark SQLは、JSONデータセットのスキーマを自動的にキャプチャし、それをDataFrameとしてロードできます。 この変換は、ストリングのRDDまたはJSONファイルで* SQLContext.read.json()*を使用して実行できます。

Spark SQLは、データの読み取りと書き込みの両方のためにJSONスキーマの自動キャプチャとともにJSONデータをクエリするオプションを提供します。 Spark SQLはJSONデータのネストされたフィールドを理解し、ユーザーが明示的な変換なしでこれらのフィールドに直接アクセスできるようにします。

*employee.json* という名前のテキストファイルの *employee* レコードの例を考えてみましょう。 次のコマンドを使用して、DataFrame(df)を作成します。

次の内容で employee.json という名前のJSONドキュメントを読み取り、JSONドキュメントのスキーマに基づいてテーブルを生成します。

*employee.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"}
}

特定のデータに対していくつかのデータフレーム操作を実行してみましょう。

データフレーム操作

DataFrameは、構造化データ操作のためのドメイン固有の言語を提供します。 ここでは、DataFrameを使用した構造化データ処理の基本的な例をいくつか示します。

以下の手順に従って、DataFrame操作を実行します-

JSONドキュメントを読む

まず、JSONドキュメントを読む必要があります。 それに基づいて、 dfs という名前のDataFrameを生成します。

次のコマンドを使用して、フィールド-id、name、およびageを含む employee.json という名前のJSONドキュメントを読み取ります。 dfs という名前のDataFrameを作成します。

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

出力-フィールド名は employee.json から自動的に取得されます。

dfs: org.apache.spark.sql.DataFrame = [age: string, id: string, name: string]

printSchemaメソッドを使用する

DataFrameの構造(スキーマ)を表示するには、次のコマンドを使用します。

scala> dfs.printSchema()

出力

root
   |-- age: string (nullable = true)
   |-- id: string (nullable = true)
   |-- name: string (nullable = true)

データを表示する

DataFrameにデータを表示する場合は、次のコマンドを使用します。

scala> dfs.show()

出力-従業員データを表形式で表示できます。

<console>:22, took 0.052610 s
+----+------+--------+
|age |  id  |  name  |
+----+------+--------+
| 25 | 1201 | satish |
| 28 | 1202 | krishna|
| 39 | 1203 | amith  |
| 23 | 1204 | javed  |
| 23 | 1205 | prudvi |
+----+------+--------+

その後、さまざまなSQLステートメントを実行できます。 ユーザーは、データソースの出所に関係なく、最小限の労力でJSON形式にデータを移行できます。