Spark-sql-parquet-files

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

Spark SQL-寄せ木張りファイル

寄木細工は、多くのデータ処理システムでサポートされている円柱形式です。 円柱状のストレージを持つことの利点は次のとおりです-

  • カラムナーストレージはIO操作を制限します。
  • カラムナーストレージは、アクセスする必要がある特定の列をフェッチできます。
  • 列状ストレージは、より少ないスペースを消費します。
  • カラムナストレージは、より要約されたデータを提供し、タイプ固有のエンコーディングに従います。

Spark SQLは、元のデータのスキーマを自動的にキャプチャする寄木細工ファイルの読み取りと書き込みの両方をサポートします。 JSONデータセットと同様に、寄木細工のファイルも同じ手順に従います。

spark-shellが実行されているのと同じディレクトリに配置された employee.parquet という名前の employee レコードデータの同じ例をもう一度見てみましょう。

与えられたデータ-従業員レコードの入力データを寄せ木細工の形式に変換することを気にしないでください。 RDDデータをParquetファイルに変換する次のコマンドを使用します。 前の例で入力ファイルとして使用した employee.json ドキュメントを配置します。

$ spark-shell
Scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)
Scala> val employee = sqlContext.read.json(“emplaoyee”)
Scala> employee.write.parquet(“employee.parquet”)

寄木細工のファイルを表示することはできません。 これは、現在のディレクトリにあるディレクトリ構造です。 ディレクトリとファイル構造を表示するには、次のコマンドを使用します。

$ cd employee.parquet/

$ ls
_common_metadata
Part-r-00001.gz.parquet
_metadata
_SUCCESS

次のコマンドは、読み取り、テーブルへの登録、およびクエリの適用に使用されます。

Spark Shellを開く

次の例を使用してSparkシェルを起動します

$ spark-shell

SQLContextオブジェクトを作成する

次のコマンドを使用してSQLContextを生成します。 ここで、 sc はSparkContextオブジェクトを意味します。

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

テキストファイルから入力を読み取る

次のステートメントを使用して、 employee.parquet という名前の寄せ木張りファイルからデータを読み取ることにより、RDD DataFrameを作成します。

scala> val parqfile = sqlContext.read.parquet(“employee.parquet”)

DataFrameをテーブルに保存します

DataFrameデータを employee という名前のテーブルに保存するには、次のコマンドを使用します。 このコマンドの後、すべてのタイプのSQLステートメントを適用できます。

scala> Parqfile.registerTempTable(“employee”)

従業員テーブルの準備ができました。 メソッド* SQLContext.sql()*を使用して、テーブルにいくつかのSQLクエリを渡します。

DataFrameでクエリを選択

*employee* テーブルからすべてのレコードを選択するには、次のコマンドを使用します。 ここでは、すべてのレコードデータをキャプチャするために変数 *allrecords* を使用します。 それらのレコードを表示するには、* show()*メソッドを呼び出します。
scala> val allrecords = sqlContext.sql("SELeCT * FROM employee")
*allrecords* DataFrameの結果データを表示するには、次のコマンドを使用します。
scala> allrecords.show()

出力

+------+--------+----+
|  id  | name   |age |
+------+--------+----+
| 1201 | satish | 25 |
| 1202 | krishna| 28 |
| 1203 | amith  | 39 |
| 1204 | javed  | 23 |
| 1205 | prudvi | 23 |
+------+--------+----+