Help us understand the problem. What is going on with this article?

Azure Data Lake Analytics(U-SQL) とその他類似環境を比較する

More than 1 year has passed since last update.

@Saint1991さんの BigQuery vs Athena vs RedShift vs Hive に乗っかって、Azure Data Lake Analyticsと他の環境を比較してみました。

ただ、データが@Saint1991さんのものとは全く異なるので、詳細な比較はできませんが、桁単位程度ではあっているのではないかと推察します。

比較対象

  • ADLA (Azure)
  • BigQuery (GCP)
  • Athena (AWS)
  • RedShift (AWS)
  • Hive (オンプレOpenStack)

ストレージ料金

Azure Data Lake Storeについて、トランザクション料金が別になっていますが。

項目 Storage料金 転送料金
ADLS $0.039/GB $0.087/GB
S3 $0.025 / GB $0.14 / GB
GCS $0.023 / GB $0.14 / GB

トランザクション料金

以下のように観点が異なるので、直接は比較しずらいところです。

  • ADLA $2/時間 (AU単位) -> $ 0.033/分AU 0.00055/秒AU
  • Athena, BigQuery: $5 / TB (スキャン量)
  • RedShift: dc2.large 1台辺り $0.314 / hour -> $ 0.0052/分 , $0.000087/秒

データフォーマット

ADLSにHDInsightからアクセスできたり、ADLAからAzure SQLなどへのアクセスがありますが、ADLAが直接アクセスできるファイルはCSV/TSVがメインになるようです。サードパーティーが提供するアセンブリを追加すると、OutputterやExtractorを拡張できるので一応できなくは無いという程度です。

項目 CSV TSV JSON Parquet ORC Arvo
ADLA In/Out In/Out (In) (In/Out) (In) (In)
BigQuery In/Out - In/Out - - In/Out
Athena In/Out In/Out In - - In
RedShift In/Out In/Out In - - In
Hive In/Out In/Out In In/Out - In/Out

Schemaの検出

U-SQLでは、Extractorに型を記述する必要がありますが、スキーマ定義が必要ではありません。

項目 Schema検出
ADLA Ok
BigQuery Ok
Athena -
RedShift -
Hive -

パフォーマンス

手元にあった34GBのデータを使いましたので、少々条件が違います。カラム数や条件に合う行数も異なるので、まったく違うかもしれませんが、ざっくりと比較するにはよいかと思います。

クエリー1

@count = SELECT COUNT( * ) AS count
    FROM @input
    WHERE column1.Length != 0;

OUTPUT @count
    TO @outputFile
    USING Outputters.Csv(outputHeader:true);

リードは20.11 GBとなりました。

クエリー2

@randsamp = SELECT * 
    FROM @input
    WHERE (column1.Length == 0) AND (new Random().Next() < 17000000 / 352824342);

@nonnull = SELECT * 
    FROM @input
    WHERE (column1.Length != 0);

@out =
    SELECT *
    FROM @randsamp
    UNION ALL
    SELECT *
    FROM @nonnull;

リードは45.40 GBとなりました。

結果

結果は以下のようになります。このサイズだと並列化をこれ以上やってもスピードは上がらないので、やはり他のエンジンほどは速くならないようです。

コストは時間とスキャンサイズでそれぞれ試算しましたが、コスト面で見た場合はそれほどドラスティックには違わないので、恐る恐る使う感覚にはならないように思います。

項目 クエリー1 クエリー2 クエリー1 コスト クエリー2 コスト
ADLA 5AU 192 sec 720 sec $ 0.528  $ 1.98
ADLA 20AU 72 sec 228 sec $ 0.792  $ 2.50
BigQuery 2 sec 26 sec $ 0.000012  $ 0.265
Athena 7 sec 115 sec $ 0.21  $ 0.42
RedShift(large 1台) 7 sec 355 sec  $ 0.0006  $ 0.03

結論

クエリーのインタラクティブ性を求めるならBigQueryやAthena、ある一定量のクエリーが見込めて、固定的に何度も使いたいならRedShift、凝った前処理や、データ変換を気軽にやりたいならADLAという感じでしょうか?Hadoop環境まではいらないが、SQLクエリーだけだと対応できない処理が多い場合は、ADLAも悪くないという感じに思っていればよさそう。

Masutani
データサイエンティストをしています。地理空間情報系の処理を主に扱っています。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away