新しいビッグ データ処理言語の U-SQL を Azure Data Lake に導入


このポストは、10 月 29 日に投稿された U-SQL, the new big data language for Azure Data Lake の翻訳です。

今回の記事は、Nishant Thacker と共同で執筆したものです。

先日Azure Data Lake AnalyticsAzure Data Lake Store (英語) のパブリック プレビューのリリースを発表しました。これを機に Azure Data Lake を活用して皆様の生産性を向上していただけるように、Azure Data Lake をさまざまな視点から解説する全 6 回のブログ シリーズを連載しています。2 回目となる今回は、Azure Data Lake Analytics に新たに導入された U-SQL 言語について詳しく説明します。

U-SQL 言語では、お客様が自身で作成した強力なコードと SQL のメリットを統合することができます。U-SQL のスケーラブルな分散型クエリ機能では、ストレージ内や Azure SQL Database などのリレーショナル ストレージに格納されているデータを効率的に分析できます。今回の記事では、U-SQL の基礎について説明します。なお、開発工程での U-SQL の詳しい使用方法については、次回の記事でお伝えします。

初めて触れる方でも、U-SQL 言語は使いやすいと感じるかもしれません。この言語の構文は T-SQL をベースに C# の型を使用しています。このため、クエリ作成時にデータの処理プロセスを想像しやすく、また新しいフレームワークや概念を覚える必要もありません。基本的に、この言語では並列処理と分散処理の根本概念が抽象化されているため、クエリ作成時にそれを気にする必要がありません。特別なプログラミング スキルを何か月もかけて習得する必要もなく、SQL と C# をよく理解していれば十分に使いこなせます。

U-SQL ではあらゆる種類のデータを処理できます。ボットネットの攻撃パターンの分析からセキュリティ ログの分析、機械学習に使用する画像や動画の特徴の抽出まで、さまざまなデータを扱うことができます。

U-SQL はカスタム コードとのシームレスな統合が可能です。企業独自の複雑なビジネス アルゴリズムもコード化することができます。異なる種類のファイルの処理や暗号化などでは処理のカスタマイズが必要ですが、一般的なクエリ言語でユーザー定義関数や独自の入出力形式などを記述するのは難しい場合があります。U-SQL では、カスタマイズ処理の記述が簡単にできることが特徴です。

さらに、U-SQL はあらゆる規模に効率的にデータをスケーリングできるよう開発されており、スケールアウトのトポロジを考慮したり、コードを詳細に調査したり、特定の分散型インフラストラクチャの制限を気にしたりする必要がありません。処理データ全体のサイズや個々のデータ単位に制限はなく、スケーリングが自動で行われ、使用可能なリソースが割り当てられます。このため、膨大なデータ処理のためにインフラストラクチャをセットアップする必要はなく、開発者はビジネス ロジックの実装作業に集中することができます。

ここで、U-SQL の内容を少し見てみましょう。次に示すのは、典型的な U-SQL クエリの例です。

@Result =

SELECT country, city, COUNT(*) AS NumberOfDrivers

FROM @Drivers

GROUP BY country, city

ORDER BY NumberOfDrivers DESC, country, city

FETCH FIRST 10 ROWS;

上記のように、データベース管理者によく使われる一般的な SELECT、FROM、GROUP BY などの句が使用されています。また、大規模なデータの取り扱いを考慮し、クエリ結果をプレビューするための FETCH 句も用意されています。次に示すのは、行セット @Drivers を抽出する例です。

@Drivers =

EXTRACT driver_id int

, name string

, street string

, city string

, region string

, zipcode string

, country string

, phone_numbers string

FROM @INPUT_DRIVERS

USING Extractors.Text(delimiter : '\t', quoting: true, encoding : Encoding.Unicode);

上記のコードでは、テキスト抽出子を使用してファイルから一連のフィールドを抽出しています。この結果はあらゆる形式に適合するようカスタマイズ可能で、またあらゆる種類のデータや区切り記号などに合わせて拡張することもできます。

最初のクエリの結果セットが返されたら、Outputters 句を使用してお好みの形式で保存することができます。

OUTPUT @Result

TO @OUTPUT

USING Outputters.Csv(quoting : true);

以上が U-SQL の簡単な使用例です。他にも、U-SQL には以下のような特徴があります。

  • 特定パターンのファイル セットの操作
  • (パーティション分割された) テーブルの使用
  • Azure SQL DB に対するフェデレーションされたクエリ
  • ビュー関数や テーブル値関数、プロシージャなどによる U-SQL コードのカプセル化
  • SQL のウィンドウ関数
  • C# のユーザー定義演算子を使用したプログラミング (カスタマイズされた抽出子およびプロセッサ)
  • 複合型 (MAP や ARRAY)
  • データ処理パイプラインでの U-SQL の使用
  • モノのインターネットの分析に使用するラムダ アーキテクチャでの U-SQL の使用

U-SQL についてさらに詳しく知りたい方は、次のビデオをご覧ください。また、次回記事でも U-SQL の詳細について説明します。

[View:https://sec.ch9.ms/ch9/6216/cbe90950-4e22-46d2-aecf-23b912ad6216/USQL_high.mp4:0:0]

 

詳細情報

ドキュメントと使用方法

 

Comments (1)

  1. Anonymous says:

    このポストは、10 月 29 日に投稿された U-SQL, the new big data language for Azure Data Lake の翻訳です。

    今回の記事は、Nishant

Skip to main content