Awesome Spark
Sparkを扱う資料や関連プロジェクトをまとめたAwesomeリストです。
パッケージ
言語バインディング
- Kotlin for Apache Spark
- Kotlin APIバインディングと拡張です。
- .NET for Apache Spark
- .NETバインディングです。
- sparklyr
-
dplyrを使う代替Rバックエンドです。 - sparkle
- Apache Spark上のHaskellです。
- spark-connect-rs
- Rustバインディングです。
- spark-connect-go
- Golangバインディングです。
- spark-connect-csharp
- C#バインディングです。
ノートブックとIDE
- almond
- Jupyter向けのScalaカーネルです。
- Apache Zeppelin
- プラグイン可能なバックエンド、統合プロット、標準での広範なSparkサポートにより、対話的データ分析を可能にするWebベースノートブックです。
- Polynote
- IDEに着想を得たポリグロットノートブックです。一つのノートブック内で複数言語を混在させ、言語間でシームレスにデータを共有できます。不変のデータモデルにより再現可能なノートブックを促進します。Netflix発です。
- sparkmagic
- Jupyterノートブックで、Livy経由でリモートSparkクラスターを対話的に扱うためのmagicsとカーネルです。
汎用ライブラリ
- itachi
- 現代的なデータベース管理システムの有用な関数をApache Sparkへもたらすライブラリです。
- spark-daria
- 生産性を高めるための必須Spark関数と拡張を備えたScalaライブラリです。
- quinn
- spark-dariaのネイティブPySpark実装です。
- Apache DataFu
- 汎用関数とUDF群のライブラリです。
- Joblib Apache Spark Backend
- Sparkクラスター上でタスクを実行する
joblibバックエンドです。
SQLデータソース
SparkSQLにはファイル向けの複数の組み込みData Sourcesがあります。csv、json、parquet、orc、avroが含まれます。JDBCデータベースとApache Hiveもサポートします。以下のパッケージを含めるか独自実装を書くことで、追加データソースを利用できます。
- Spark XML
- XMLパーサー・ライターです。
- Spark Cassandra Connector
- データソースとAPI、任意のクエリを含むCassandraサポートです。
- Mongo-Spark
- 公式MongoDBコネクターです。
ストレージ
- Delta Lake
- ACIDトランザクションを備えるストレージ層です。
- Apache Hudi
- ビッグデータ上のアップサート、削除、増分処理です。
- Apache Iceberg
- ビッグデータ上のアップサート、削除、増分処理です。
- lakeFS
- lakeFSのアトミックなバージョン付きストレージ層との統合です。
バイオインフォマティクス
GIS
- Apache Sedona
- 大規模な空間データを処理するクラスターコンピューティングシステムです。
グラフ処理
- GraphFrames
- データフレームベースのグラフAPIです。
- neo4j-spark-connector
- RDD、DataFrame、GraphX / GraphFramesをサポートする、BoltプロトコルベースのNeo4jコネクターです。
機械学習拡張
- Apache SystemML
- Spark上の宣言的機械学習フレームワークです。
- Mahout Spark Bindings [status unknown] - R風構文を持つ線形代数DSLとオプティマイザーです。
- KeystoneML - RDDによる型安全な機械学習パイプラインです。
- JPMML-Spark
- Spark ML向けのPMML変換ライブラリです。
- ModelDB
-
spark.mlおよびscikit-learnの機械学習モデルを管理するシステムです。
- Sparkling Water
- H2Oとの相互運用レイヤーです。
- BigDL
- 分散ディープラーニングライブラリです。
- MLeap
-
o.a.s.mlモデルをSparkSessionに依存せずにデプロイできる実行エンジンおよびシリアライズ形式です。 - Microsoft ML for Apache Spark
- LightGBM、Vowpal Wabbit、OpenCV、ディープラーニング、Cognitive Services、モデルデプロイメントをサポートする分散MLライブラリです。
- MLflow
- 機械学習オーケストレーションプラットフォームです。
ミドルウェア
- Livy
- 幅広い言語(Python、R、Scala)をサポートし、対話セッションの維持とオブジェクト共有を可能にするRESTサーバーです。
- spark-jobserver
- いわゆる名前付きオブジェクトを用いたオブジェクト共有をサポートするシンプルなSpark as a Serviceです。JVM専用です。
- Apache Toree
- 対話型アプリケーション向けのIPythonプロトコルベースのミドルウェアです。
- Apache Kyuubi
- Apache Spark上に構築された、大規模データ処理および分析用の分散マルチテナントJDBCサーバーです。
監視
- Data Mechanics Delight
- クロスプラットフォームの監視ツール(Spark UI / Spark History Serverの代替)です。
ユーティリティ
- sparkly
- PySpark向けのヘルパーとシンタックスシュガーです。
- Flintrock
- EC2上でSparkクラスターを起動するためのコマンドラインツールです。
- Optimus
- データクレンジングを簡略化することを目的とした、データクレンジングおよび探索ユーティリティです。
自然言語処理
- spark-nlp
- Apache Spark ML上に構築された自然言語処理ライブラリです。
ストリーミング
- Apache Bahir
- Spark 2.0から除外されたストリーミングコネクター(Akka、MQTT、Twitter、ZeroMQ)のコレクションです。
インターフェース
- Apache Beam
- バッチおよびストリーミングアプリケーションの両方をサポートする統合データ処理エンジンです。Apache Sparkはサポート対象の実行環境の一つです。
- Koalas
- Apache Spark上のPandas DataFrame APIです。
データ品質
- deequ
- 大規模データセットのデータ品質を測定する「データのユニットテスト」を定義するための、Apache Spark上に構築されたライブラリです。
- python-deequ
- Deequ向けのPython APIです。
テスト
- spark-testing-base
- 基本テストクラスのコレクションです。
- spark-fast-tests
- 軽量で高速なテストフレームワークです。
- chispa
- 見やすいエラーメッセージを備えたPySparkテストヘルパーです。
ウェブアーカイブ
- Archives Unleashed Toolkit
- ウェブアーカイブを分析するためのオープンソースツールキットです。
ワークフロー管理
- Cromwell
- Sparkバックエンドを備えたワークフロー管理システムです。
リソース
書籍
- Learning Spark, 2nd Edition - Spark 3.0を扱うSpark API入門書です。基本概念を学ぶ優れた情報源です。
- Advanced Analytics with Spark - Spark処理パターンの有用なコレクションです。付属GitHubリポジトリ: sryza/aas。
- Mastering Apache Spark - Jacek Laskowskiによる興味深いノート集です。Spark内部のさまざまな側面に焦点を当てています。
- Spark in Action - Manningの「in action」シリーズに加わった400ページ超の書籍です。穏やかに段階を追って多くのトピックを扱います。提供されるMaven Archetypeを使った新規アプリケーションの起動方法、およびSparkアプリケーション開発用にEclipseをセットアップする方法の無料抜粋があります。付属GitHubリポジトリはこちらです。
論文
- Large-Scale Intelligent Microservices - データベース操作をウェブサービスプリミティブまで拡張する、Apache Sparkベースのマイクロサービスオーケストレーションフレームワークを提示するMicrosoftの論文です。
- Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing - 中核となる分散メモリー抽象化を紹介する論文です。
- Spark SQL: Relational Data Processing in Spark - リレーショナル基盤、コード生成、Catalystオプティマイザーを紹介する論文です。
- Structured Streaming: A Declarative API for Real-Time Applications in Apache Spark - Structured Streamingは新しい高水準ストリーミングAPIであり、静的リレーショナルクエリーを自動的に増分化することに基づく宣言型APIです。
MOOC
- Data Science and Engineering with Apache Spark (edX XSeries) - ソフトウェアエンジニアリングとデータサイエンスのさまざまな側面を扱う5つのコース(Introduction to Apache Spark、Distributed Machine Learning with Apache Spark、Big Data Analysis with Apache Spark、Advanced Apache Spark for Data Science and Data Engineering、Advanced Distributed Machine Learning with Apache Spark)のシリーズです。Python向けです。
- Big Data Analysis with Scala and Spark (Coursera) - Scala向けの入門コースです。Functional Programming in Scala Specializationの一部です。
ワークショップ
- AMP Camp - UC Berkeley AMPLabが主催する定期的なトレーニングイベントです。Berkeley Data Analytics Stackのさまざまなツールを扱う有用な演習と録画済みワークショップの情報源です。
Sparkを使用するプロジェクト
- Oryx 2 - Lambda architectureプラットフォームであり、Apache SparkおよびApache Kafka上に構築され、リアルタイム大規模機械学習に特化しています。
- Photon ML - 従来の一般化混合モデルおよび一般化加法混合効果モデルをサポートする機械学習ライブラリです。
- PredictionIO - 開発者とデータサイエンティストが予測アプリケーションを短時間で構築・デプロイするための機械学習サーバーです。
- Crossdata - 拡張DataSource APIとマルチユーザー環境を備えたデータ統合プラットフォームです。
Dockerイメージ
- apache/spark - Apache Spark公式Dockerイメージです。
- jupyter/docker-stacks/pyspark-notebook - Jupyter NotebookおよびMesosクライアントを備えたPySparkです。
- sequenceiq/docker-spark - SequenceIQによるYarnイメージです。
- datamechanics/spark - Data Mechanicsによる、セットアップが簡単なApache Spark用Dockerイメージです。
その他
- Spark with Scala Gitter channel - @deanwamplerが始めた「ScalaによるSparkプログラミングの利用について議論し、質問する場」です。
- Apache Spark User ListおよびApache Spark Developers List - それぞれ利用に関する質問と開発トピックに特化したメーリングリストです。
参考文献
Wikipedia. 2017. 「Apache Spark — Wikipedia, the Free Encyclopedia」。 https://en.wikipedia.org/w/index.php?title=Apache_Spark&oldid=781182753。
ライセンス
この作品(https://github.com/awesome-spark/awesome-sparkによるAwesome Spark)は、Maciej Szymkiewiczにより識別されており、既知の著作権上の制限はありません。
Apache Spark、Spark、Apache、およびSparkロゴは、商標であり、The Apache Software Foundationに帰属します。この編集物はThe Apache Software Foundationの承認を受けたものではありません。
sindresorhus/awesomeに着想を得ています。