ひしだまの変更履歴

ひしだまHPの更新履歴。
主にTRPGリプレイの元ネタ集、プログラミング技術メモと自作ソフト、好きなゲームや音楽です。

Sqoopのソース

2012-06-19 23:51:43 | PG(分散処理)

Sqoopがどういう風にSQLを実行しているのか興味があったので、ちょっと見てみた。

まずはソースのダウンロードだけど、普通にCDH3ダウンロードサイトからダウンロードする。
Hadoopのソースだとyumでダウンロードできるんだけど…まぁ、Sqoopのソースはそこまで需要無い気もするから、仕方ないかw

で、とりあえずexportに関する部分を見てみたんだけど、びっくり!
HDFS上のファイルを読み込む部分と、DBへINSERTする部分が別スレッドになってる!
まさかそんな作りになっているとは思わなかった。けっこう凝ってるんだなぁ。

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

Sqoop Oracle

2012-06-19 21:12:59 | PG(分散処理)

SqoopOracleを試してみた。

Oracle用Sqoopについて『HADOOP HACKS』に載っていた通り、テーブル名が小文字だと落ちるし(苦笑)
テーブル名とユーザー名を大文字にしたら一応動いたけど、作られるディレクトリーやJavaクラス名が全部大文字なのは、ちと違和感があるな^^;

exportのデフォルトモードでは、MySQLPostgreSQLは複数VALUES INSERTを使うが、Oracleにはそのような構文は無い。バッチモードと同じになるのかな?と思ったが、どうやらSELECT~INSERTを使っているらしい。意外と頑張ってるなw

更新モード(--update-key)では、--update-modeにallowinsertが指定できる。
SQLとしてはMERGE文を使っているようだ。なるほど、MERGEはまさにこういう目的に使うものだな。
(MySQLやPostgreSQLがallowinsertに対応していなかったのは、MERGE文が無い為か。納得)

OraOopも一応インストールしてみた。
確かにテーブル名やユーザー名に小文字が使える。
一緒にダウンロードできるpdfのドキュメントをちらっと見た感じでは、importの範囲分割に関してはROWIDを使っているらしい。Oracleでは最速の方法ですな。

ただ、『HADOOP HACKS』では触れられていなかったが、ユーザーにDBAロール(管理者権限)を付けていないとdba_tab_columns等のテーブルにアクセスできなくてエラーになる。なんでuser系のビュー(uesr_tab_columns)を使わないんだろう…?

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする