GraphXよりも使いやすいグラフデータ処理ライブラリ「GraphFrames」Java、Pythonでのグラフデータ処理が簡単に

「Apache Spark」のグラフデータ処理ライブラリ「GraphFrames」がリリースされた。米Databricks、米カリフォルニア大学バークレー校、米マサチューセッツ工科大学がSparkの「DataFrame」をベースに共同で開発したもの。

» 2016年03月07日 18時51分 公開
[@IT]

 オープンソースの高速な大規模分散データ処理フレームワーク「Apache Spark」(以下、Spark)の開発を主導する米Databricksは2016年3月3日(米国時間)、Sparkのグラフデータ処理ライブラリ「GraphFrames」をリリースした。GraphFramesは、Databricksと米カリフォルニア大学バークレー校、米マサチューセッツ工科大学(MIT)がSparkの「DataFrame」をベースに開発したもの。

 Sparkのドキュメントによると、DataFrameは、データの分散コレクションを「名前付きの列」に整理したもので、概念的には、リレーショナルデータベースのテーブルや、R、Pythonのデータフレームと同等だが、グラフデータ用に「高度に最適化されている」という。

 GraphFrameは構造化データファイル、Apache Hiveのテーブル、外部データベース、既存のリレーショナルデータベースなど、多様なソースから構築できる。Scala、Java、Python、R向けのAPIが用意されている。

 Databricksによると、GraphFramesはDataFrameが持つスケーラビリティと高いパフォーマンスの恩恵を受けており、Scalaの他、Java、Pythonでグラフデータ処理を利用するための単一のAPIを提供する。これにより、PythonとJavaから「GraphX」の全てのアルゴリズムを利用可能になった。この他、SparkのGraphXライブラリと似た一般的なグラフデータ処理をサポートする他、「幅優先探索(BFS)」や「モチーフ探索」といった新しいアルゴリズムにも対応する。

 また、GraphFramesはDataFrameのデータソースを完全にサポートするので、Hadoop向けの列指向ストレージ「Parquet」形式や、JSON、CSVなど、さまざまなデータフォーマットを利用できる。

 同社は公式ブログで、ソーシャルネットワークを簡単なグラフとして表現した例を用いてGraphFramesを紹介している(ユーザーが「点」、ユーザー間の関係が「辺」)。「どのユーザーが最も影響力があるか」「ユーザーAとBは知らない者同士だが、引き合わせるべきか」といった問いに対して、グラフのクエリやアルゴリズムを使って答えを出すことができるという。

ソーシャルネットワークのグラフ表現

 この例では、ユーザー(点)は「名前」「年齢」を、ユーザー間の関係(辺)は「関係タイプ」といった属性を持つが、GraphFramesでは点と辺をDataFrameとして保存する。多くのクエリはDataFrame(またはSQL)クエリとなるため「グラフに対するクエリを簡単に表現できる」と、Databricksは説明している。

Apache Hive 2.0では「Hive-on-Spark parallel ORDER BY」が実装

 Spark周辺のプロダクト開発が活性化しており、直近では、米クラウデラが開発を主導するHadoop向けSQLクエリエンジンの最新版「Apache Hive 2.0」でも、Sparkに対する並列ソート機能「Hive-on-Spark parallel ORDER BY」などが新たに実装されている。

Apache Hive 2.0のリリースを伝える米クラウデラのブログ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。