1はじめに
Apache Drillは、HadoopおよびNoSQL用のオープンソースの低レイテンシSQLクエリエンジンです。
Apache DrillはGoogleのDremelを実装していますが、GoogleのDremelとは何ですか?ネットワーク内の説明:Dremelは、Googleの「インタラクティブな」データ分析システムです。PBレベルのデータを処理するために、何千ものクラスターに組み込むことができます。MapReduceがデータを処理するのに数分かかります。MapReduceのイニシエーターとして、GoogleはMapReduceの強力な補足として、処理時間を2番目のレベルに短縮するDremelを開発しました。Google BigQueryのレポートエンジンとして、Dremelは大きな成功を収めています。
Apache Drillは、分散された大量のデータ(構造化データ、半構造化データ、ネストされたデータをカバー)用の低レイテンシのインタラクティブクエリエンジンです。ANSISQL互換の構文を使用し、ローカルファイル、HDFS、HBase、MongoDBなどのバックエンドストレージをサポートします。 。寄木細工、JSON、CSV、TSV、PSVおよびその他のデータ形式。GoogleのDremelに触発されたDrillは、PBレベルのデータの数千のノードでインタラクティブなビジネスインテリジェンス分析シナリオを満たします。
(1)Cilent
はDrillを使用します。次の方法でDrillに入ることができます。内容は次のとおりです。Drillshell
:クライアントコマンドを使用して
Drillを操作します。Webコンソール:WebUIインターフェイスを使用して関連コンテンツを操作し
ます。
C ++ API:C ++ APIインターフェース
(2)コアモジュール
2ダウンロードしてインストールします
ドリルは、単一のマシンまたはクラスター環境にインストールできます。
ウェブサイトhttps://drill.apache.org/。
URLhttps://drill.apache.org/download/。
ダウンロードリンク:https:
//mirrors.tuna.tsinghua.edu.cn/apache/drill/#tar -xzvf apache-drill-1.16.0.tar.gz -C / usr / local / #cd
/ usr / local /
#mv apache-drill-1.16.0 /ドリル
#vi / root / .bashrc
export DRILL_HOME=/usr/local/drill
export PATH=$PATH:$DRILL_HOME/bin
#source /root/.bashrc
3スタンドアロン操作
構成は必要ありません。
(1)開始
#sqlline -u jdbc:drill:zk = local
apache Drill >!quit
文が表示されるたびに終了します。その中で、-u jdbc:drill:zk = localは、ローカルドリルを使用することを意味し、ZooKeeperを起動する必要はありません。つまり、ローカルzookeeperサービス、ローカルzookeeperサービスを個別に構成する必要はありません。クラスター環境の場合は、ZooKeeperを構成して起動し、アドレスを入力する必要があります。
(2)ドリルUIを表示する
http://10.23.241.177:8047/
(3)[ストレージ]タブをクリックして、現在サポートされているアクセススキーマを表示します。
4使用
4.1ローカルファイル
ここで使用されるライブラリ名の形式は次のとおりです。
dfs.`本地文件(Parquet、JSON、CSV等文件)绝对路径`
(1)Parquet形式のデータ
Drillのサンプルデータディレクトリには、クエリ用の
Parquet形式のデモデータがあります。#sqlline -u jdbc:drill:zk = local
apache Drill >!quit
apache drill> select * from dfs.`/usr/local/drill/sample-data/nation.parquet` limit 5;
apache drill> select count(*) from dfs.`/usr/local/drill/sample-data/nation.parquet` limit 5;
寄木細工の形式のファイルを表示および編集するには特別なツールが必要ですが、これはあまり便利ではありません。まず、より一般的なCSVファイルとJSONファイルを使用してデモンストレーションを行います。
(2)CSV形式のデータ
ファイルtest.csv
1101,SteveEurich,Steve,Eurich,16,StoreT
1102,MaryPierson,Mary,Pierson,16,StoreT
1103,LeoJones,Leo,Jones,16,StoreTem
1104,NancyBeatty,Nancy,Beatty,16,StoreT
1105,ClaraMcNight,Clara,McNight,16,Store
お問い合わせ
apache drill> select * from dfs.`/root/test.csv`;
結果は前のものとは少し異なります。CSVファイルには列の列名を格納する場所がないため、代わりに列が使用されます。列を指定する必要がある場合は、columns [n]を使用する必要があります。
apache drill> select columns[0],columns[4] from dfs.`/root/test.csv`;
(3)JSON形式のデータ
ファイルtest.json。
{
"ka1": 1,
"kb1": 1.1,
"kc1": "vc11",
"kd1": [
{
"ka2": 10,
"kb2": 10.1,
"kc2": "vc1010"
}
]
}
{
"ka1": 2,
"kb1": 2.2,
"kc1": "vc22",
"kd1": [
{
"ka2": 20,
"kb2": 20.2,
"kc2": "vc2020"
}
]
}
このJSONファイルのコンテンツには複数のレベルのネストがあり、構造は以前のCSVファイルよりもはるかに複雑であり、ネストされたデータのクエリがドリルの利点であることがわかります。
apache drill> select * from dfs.`/root/test.json`;
apache drill> select kc1,kd1[0].kc2 from dfs.`/root/test.json`;
選択*最初のレイヤーのデータのみを検索し、より深いデータは元のJSONデータでのみ表示されます。明らかに、最初のレイヤーのデータだけを気にする必要はありません。確認方法は完全に任意です。アクセスできます。 kd1 [0]を介してこのテーブルの2番目のレベルにネストされます。
(4)ビューを作成する
apache drill> create view dfs.tmp.tmpview as select kd1[0].kb2 from dfs.`/root/test.json`;
apache drill> select * from dfs.tmp.tmpview;
4.2 hdfs
#sqlline -u jdbc:drill:zk = local
http://10.23.241.177:8047/ドリルUIを表示して
[ストレージ]タブを開き、既存のdfsを更新し、dfsインスタンスを模倣し、hdfsにアクセスするためのストレージプラグインを追加します。下部に新しいストレージプラグイン名を入力し、[作成]をクリックして次のページに入り、次の情報を入力します
。hdfs
{
"type": "file",
"enabled": true,
"connection": "hdfs://pda1:9000/",
"workspaces": {
"root": {
"location": "/",
"writable": true,
"defaultInputFormat": null
}
},
"formats": {
"csv": {
"type": "text",
"extensions": [
"csv"
],
"delimiter": ","
},
"parquet": {
"type": "parquet"
}
}
}
ここで、「接続」:「hdfs:// pda1:9000 /」はローカルのhdfsアドレスを指します。
その中で、「location」:「/ opt / Drill」はワークスペースです。hdfsデータを別のテーブルにエクスポートする場合は、そのテーブルをhdfsのlocationディレクトリにエクスポートできます。
形式は、サポートされているファイル形式です。
(1)ファイルtest.csv
1101,SteveEurich,Steve,Eurich,16,StoreT
1102,MaryPierson,Mary,Pierson,16,StoreT
1103,LeoJones,Leo,Jones,16,StoreTem
1104,NancyBeatty,Nancy,Beatty,16,StoreT
1105,ClaraMcNight,Clara,McNight,16,Store
(2)スタートのHadoopクラスタ
#start-dfs.sh
#start-yarn.sh
#hadoop FS -ls /
#hadoop FS -put /root/test.csv /アップロードファイル
HDFSから選択*> apacheのドリルを/test.csv
;
することができ独立してデプロイされる物理マシンでは、Hadoopクラスターとともにデプロイする必要はありません。ここで、物理マシンのメモリには、Drillが使用できるように少なくとも4Gの空き容量があることに注意してください。そうしないと、クエリ操作の実行時にコンテンツがオーバーフローします。Drillの公式ドキュメントをクエリすると、操作のコンテンツはメモリ内で完了し、強制的にディスクに書き込まない限り、ディスクに書き込まれないという公式の説明があります。ディスク。ただし、一般的に応答速度を考慮すると、メモリ内で完了します。