Drill

2016 年に向けた注目の新機能の開発状況

この記事は Apache Drill Advent Calendar 2015 の25日目の記事です。 2015年もあとわずか。今回は Drill の JIRA チケットや GitHub を眺めつつ、2016年にどんな新機能が出てきそうか興味のおもむくままにご紹介しましょう。 Cassandra ストレージプラグイ…

Drill のユーザ認証とインパーソネーション

この記事は Apache Drill Advent Calendar 2015 の24日目の記事です。 今回は、Drill のセキュリティを向上させる2つの機能、インパーソネーションとユーザ認証について紹介します。 インパーソネーション Drill には、クライアントから要求されたアクション…

Parquet のパーティショニングによる性能最適化

この記事は Apache Drill Advent Calendar 2015 の23日目の記事です。 Drill では Parquet フォーマットを使うことによって、パーティションプルーニングによる性能上のメリットを得ることができます。パーティションプルーニングとは、アクセスするパーティ…

Drill Web UI のビジュアルなクエリプロファイル

この記事は Apache Drill Advent Calendar 2015 の22日目の記事です。 Drill のパフォーマンスチューニングに役立つ情報の一つはクエリプラン、そしてもう一つはクエリプロファイルです。今回はクエリプロファイルでどんな情報が見られるかを紹介していきま…

クエリプランの見かたとハッキングの方法

この記事は Apache Drill Advent Calendar 2015 の19日目の記事です。 SQL が動いて正しい結果が返ってくればよい、というのであれば必要ないのですが、パフォーマンスが気になり始めたらクエリプランとプロファイルを調べていく必要が出てきます。 SQL が発…

Drill 内部のジョインストラテジー

この記事は Apache Drill Advent Calendar 2015 の18日目の記事です。 一般的な RDMBS のジョインアルゴリズムには、代表的なものとして ネストループ結合、マージ結合、ハッシュ結合などがあります。それぞれレコードへのアクセス方法や順序などが異なって…

HBase データソースに対する Pushdown (2)

この記事は Apache Drill Advent Calendar 2015 の16日目の記事です。 前回の記事からの続きです。 前回は HBase テーブルを対象としたクエリに WHERE 句で条件を加えることで、HBase 側で Pushdown を行う実行プランが作成されている様子を確認しました。で…

HBase データソースに対する Pushdown (1)

この記事は Apache Drill Advent Calendar 2015 の15日目の記事です。 HBase は Hadoop 上で動作する、「ワイドカラム型」NoSQL データベースです。RDBMS 風のテーブル構造を持ちますが、固定のスキーマを持つわけではないのでデータ構造の変更には柔軟であ…

テキストファイルとNULLの扱い

この記事は Apache Drill Advent Calendar 2015 の14日目の記事です。 CSV 形式などのテキストファイルでどのように NULL を表現するかは、CSV を出力する RDBMS やアプリケーション毎に異なっているので結構悩みのタネですね。 Oracle(SPOOL を使用): 引…

Drillbit が使用するメモリサイズ

この記事は Apache Drill Advent Calendar 2015 の12日目の記事です。 Drill クラスタを構築する場合、各ノードで Drillbit という Java プロセスを立ち上げます。Drillbit は、ノードに常駐するデーモンプロセスとしてクラスタ全体で協調して動作することで…

クエリ毎のリソース制御について

この記事は Apache Drill Advent Calendar 2015 の11日目の記事です。 Drill クラスタを構築して、ある程度規模の大きい SQL クエリ基盤を運用する場合、普通は複数のユーザーや複数のアプリケーションで Drill クラスタを共有する使い方をすると思います。…

CSV ファイルを Parquet ファイルに変換してクエリを高速化

この記事は Apache Drill Advent Calendar 2015 の8日目の記事です。 Apache Drill では Apache Parquet という大規模データの分析に適したデータフォーマットを利用することができます。Row-oriented フォーマットにカテゴリ分けされる CSV、TSV といったテ…

改行コード (CRLF) に注意

この記事は Apache Drill Advent Calendar 2015 の7日目の記事です。 改行コードの取り扱いは、現時点での Drill の注意事項の一つです。Linux/Mac の環境で生成されたテキストデータであれば問題は起きませんが、Windows 環境で生成されたテキストデータ(…

ネストデータのカラム指定方法について

この記事は Apache Drill Advent Calendar 2015 の5日目の記事です。 通常の SQL はリレーショナルデータを対象とするため、テーブルは行と列からなるフラットな構造です。SELECT 文で特定のカラムの値を取り出すには、単にカラム名を指定するだけです。 し…

UNION 型: データ型が混在するカラムのサポート

この記事は Apache Drill Advent Calendar 2015 の3日目の記事です。 少し前の記事で、一つのカラムにデータ型が混在したデータを読むときの注意点を説明しました。 その後リリースされた Drill 1.3 で、[DRILL-3229] Create a new EmbeddedVector にて改良…

CSV ファイルのヘッダ行をカラム名に使う

この記事は Apache Drill Advent Calendar 2015 の2日目の記事です。 11月の Tokyo Apache Drill Meetup で出た質問の中に、「CSV ファイルのヘッダ行をカラム名に使いたいが可能か?」というものがありましたが、Drill 1.2 では先頭行をスキップするオプシ…

Apache Drill 今日の一言 (MOTD)

この記事は Apache Drill Advent Calendar 2015 の1日目の記事です。 Drill のフロントエンド(シェル)である sqlline を起動すると、プロンプトの前に短いメッセージが表示されます。 $ sqlline -u jdbc:drill:zk=local Dec 1, 2015 2:13:59 AM org.glassf…

Apache Drillで整数型と浮動小数点型が混じったJSONデータを読む時の注意

こんな感じのJSONデータがあるとします。気温を記録しているセンサーログデータ的なものですね。 $ cat /tmp/sensor.json { "data":[ {"sensor_id":15, "timestamp":"2015-10-29 08:00:00.004", "temperature":14.8}, {"sensor_id":15, "timestamp":"2015-10…

政府統計情報 e-Stat を Apache Drill で分析してみる (3)

前回の記事からの続きです。 政府統計情報 e-Stat を Apache Drill で分析してみる (2) - nagix ビューを作成 前回までに、平成22年の国勢調査における人口増減に関する統計データを取得するところまでいきました。今回はSQLを使って統計データの集計をして…

政府統計情報 e-Stat を Apache Drill で分析してみる (2)

前回の記事の続きからです。 <a href="http://nagix.hatenablog.com/entry/2015/05/21/232526" data-mce-href="http://nagix.hatenablog.com/entry/2015/05/21/232526">政府統計情報 e-Stat を Apache Drill で分析してみる (1) - nagix</a> メタ情報の取得 前回は、平成22年度の国勢調査の人口増減のデータを含む統計表ID「0003038586」を探し出すところまでいきました。 次は、この表がどのような構…

マナーの悪い JSON データを jq で整形する

JSONデータの問題 色々なJSONデータを扱っていると、たまにマナーの悪いデータを目にします。例えば、政府統計情報e-Statでダウンロードできる次のようなJSONデータ(一部を切り出しています)。 {"CLASS_OBJ":[ {"@id":"tab","@name":"表章項目","CLASS":[{…

Apache Drill で日本語を扱うときの注意

言語の設定がUTF-8になっている環境であれば、データに日本語が含まれていても基本的に問題はありません。 $ echo $LANG ja_JP.UTF-8 次のようなCSVファイルを $ cat /tmp/test.csv 1,くまモン,熊本 2,ふなっしー,船橋 3,せんとくん,奈良 次のSQLで取得する…

政府統計情報 e-Stat を Apache Drill で分析してみる (1)

スキーマフリーSQLクエリエンジンApache Drillがついにバージョン1.0になりました。 Apache Drill - Schema-free SQL for Hadoop, NoSQL and Cloud Storage これを機会に、Drillの得意とするJSON形式の結構複雑なデータの分析を、いろいろなオープンデータを…

ネスト構造のJSONデータにApache Drillで直接SQLクエリをかける

この記事は Spark, SQL on Hadoop etc. Advent Calendar 2014 の18日目の記事です。 Drill のここがすごい 先日 Apache Drill も晴れて Apache Software Foundation のトップレベルプロジェクトになりまして、来年初頭のバージョン1.0リリースに向けて機能が…

Apache Drill ではクエリ処理はこんな風に行われる(Hadoop アドベントカレンダー 2013 16日目)

この記事は Hadoop アドベントカレンダー 2013の16日目の記事です。 Apache Drill 概要 Apache Drill は Google Dremel に触発されて開発されたオープンソースプロジェクトで、2012年8月に Apache Incubator として提案されました。大規模データに対し、バッ…