Spark-sql-dataframes
Spark SQL-データフレーム
DataFrameは、名前付き列に編成されたデータの分散コレクションです。 概念的には、優れた最適化手法を備えたリレーショナルテーブルと同等です。
DataFrameは、Hiveテーブル、構造化データファイル、外部データベース、既存のRDDなど、さまざまなソースの配列から構築できます。 このAPIは、Rプログラミングの DataFrame およびPythonの Pandas からインスピレーションを得た、現代のビッグデータおよびデータサイエンスアプリケーション向けに設計されました。
DataFrameの機能
ここにDataFrameのいくつかの特徴的な機能のセットがあります-
- 単一ノードクラスターから大規模クラスターで、キロバイトからペタバイトのサイズのデータを処理する機能。
- さまざまなデータ形式(Avro、csv、エラスティック検索、Cassandra)およびストレージシステム(HDFS、HIVEテーブル、mysqlなど)をサポートします。
- Spark SQL Catalystオプティマイザー(ツリー変換フレームワーク)による最先端の最適化とコード生成。
- Spark-Coreを介して、すべてのビッグデータツールおよびフレームワークと簡単に統合できます。
- Python、Java、Scala、およびRプログラミング用のAPIを提供します。
SQLContext
SQLContextはクラスであり、Spark SQLの機能を初期化するために使用されます。 SQLContextクラスオブジェクトを初期化するには、SparkContextクラスオブジェクト(sc)が必要です。
次のコマンドは、spark-shellを介してSparkContextを初期化するために使用されます。
デフォルトでは、SparkContextオブジェクトは、spark-shellの起動時に sc という名前で初期化されます。
次のコマンドを使用して、SQLContextを作成します。
例
データフレーム操作
DataFrameは、構造化データ操作のためのドメイン固有の言語を提供します。 ここでは、DataFrameを使用した構造化データ処理の基本的な例をいくつか示します。
以下の手順に従って、DataFrame操作を実行します-
JSONドキュメントを読む
最初に、JSONドキュメントを読む必要があります。 これに基づいて、(dfs)という名前のDataFrameを生成します。
次のコマンドを使用して、 employee.json という名前のJSONドキュメントを読み取ります。 データは、id、name、およびageのフィールドを持つテーブルとして表示されます。
出力-フィールド名は employee.json から自動的に取得されます。
データを表示する
DataFrameのデータを表示する場合は、次のコマンドを使用します。
出力-従業員データを表形式で表示できます。
printSchemaメソッドを使用する
DataFrameの構造(スキーマ)を表示するには、次のコマンドを使用します。
出力
Selectメソッドを使用
次のコマンドを使用して、DataFrameの3つの列から name -columnを取得します。
出力-*名前*列の値を見ることができます。
年齢フィルターを使用する
次のコマンドを使用して、年齢が23歳(23歳以上)の従業員を見つけます。
出力
groupByメソッドを使用する
同じ年齢の従業員の数をカウントするには、次のコマンドを使用します。
出力-2人の従業員は23歳です。
プログラムによるSQLクエリの実行
SQLContextを使用すると、アプリケーションはSQL関数の実行中にプログラムでSQLクエリを実行し、結果をDataFrameとして返します。
一般に、バックグラウンドで、SparkSQLは既存のRDDをDataFrameに変換するための2つの異なる方法をサポートします-
Sr. No | Methods & Description |
---|---|
1 |
Inferring the Schema using Reflection このメソッドは、リフレクションを使用して、特定のタイプのオブジェクトを含むRDDのスキーマを生成します。 |
2 |
Programmatically Specifying the Schema DataFrameを作成する2番目の方法は、スキーマを構築し、それを既存のRDDに適用できるプログラムインターフェイスを使用することです。 |