📝

red-arrow セットアップ編

2023/09/30に公開

はじめに

データ集計をするときは行単位ではなく列単位で処理をしたほうがやりやすい。
pandasのようなデータフレームのライブラリがRubyでないか調べたところ、
red-arrowを見つけました。

セットアップ

https://github.com/apache/arrow/tree/main/ruby/red-arrow

Install Apache Arrow GLib before install Red Arrow

gemの他に、マシン自体ににApache Arrow GLibを入れる必要があります。

今回はDockerで環境を立てるので、ruby:3.2.2-slim-bookwormをベースとしたDockerfileを用意します。
プラットフォームごとにインストール方法が異なるため、適宜読み替えてください。
https://arrow.apache.org/install/

Dockerfile

FROM ruby:3.2.2-slim-bookworm

ENV LANG=ja_JP.UTF-8
ENV TZ=Asia/Tokyo

RUN apt-get update -qq \
 && apt-get install -y \
  build-essential \
  libpq-dev \
  curl \
  sudo \
  less \
  git \
  lsb-release \
  wget

# Install for arrow
# see: https://arrow.apache.org/install/
RUN wget https://apache.jfrog.io/artifactory/arrow/$(lsb_release --id --short | tr 'A-Z' 'a-z')/apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
RUN sudo apt-get install -y -V ./apache-arrow-apt-source-latest-$(lsb_release --codename --short).deb
RUN apt-get update -qq \
  && apt-get install -y -V \
  libarrow-glib-dev
  # libarrow-dev \
  # libarrow-dataset-dev \
  # libarrow-acero-dev \
  # libarrow-flight-dev \
  # libarrow-flight-sql-dev \
  # libgandiva-dev \
  # libparquet-dev

RUN mkdir /app
WORKDIR /app

COPY Gemfile* /app/

RUN bundle install

# Copy application code
COPY . .

EXPOSE 3000

CMD ["rails", "server", "-b", "0.0.0.0"]

一旦はlibarrow-glib-devだけインストールしており、
使いたいGemに合わせて同様にインストールしていけば良いようです。

Gemfile

gem 'red-arrow'

おわりに

Railsのサービスで使いたいところもあり、ActiveRecordと組み合わせるところを触っていきたいと思います。

Apache ArrowのRubyバインディングであるred arrowを始めとしたデータ分析の機能は、Red-Data-Toolsというプロジェクトで開発されており、ホットなコミュニティなようです。
https://red-data-tools.github.io/ja/
https://speakerdeck.com/mrkn/red-data-tools-deqie-rikai-ku-ruby-nowei-lai

Discussion