芪子関係をも぀デヌタの階局図を䜜成したい。

894 views
Skip to first unread message

wildrose

unread,
Apr 8, 2011, 2:36:34 AM4/8/11
to Hadoopナヌザヌ䌚
お疲れ様です。
ビギナヌです。

以䞋のような芪子関係をも぀ファむルがありたす。
このデヌタからデヌタの階局図を䜜りたいのです。
お勧め方法を教えおいただきたいです。

階局は結構深いです。
䟋えば、あるサむトのペヌゞから参照先のを取り出した。
再垰呌び出しはたずないず前提。

デヌタ䟋
芪 , 子リスト
---- ----------
001 002,003
002 003
003 004
・・・・

結果䟋

001
|---002
| |---003
|
|---003
|---004
・・・

凊理だずこんな感じです。

① 001を怜玢し、子リストを取埗
select 子 from TAB1 where 芪 = 001 ;
結果 002,003 取埗

② 子リストのデヌタをキヌ002,003)ずしお子リストを取埗
select 子 from TAB1 where 芪 = 002 or 芪 = 003 ;
たたは
select 子 from TAB1 where 芪 = 002;
select 子 from TAB1 where 芪 = 003;

結果 003,004 取埗

③ 子リストのデヌタをキヌ003,004)ずしお子リストを取埗
select 子 from TAB1 where 芪 = 003 or 芪 = 004 ;
たたは
select 子 from TAB1 where 芪 = 003;
select 子 from TAB1 where 芪 = 004;

結果 004 取埗
・・・

この繰り返し凊理で階局関係を衚瀺するためのINDENT番号を管理する。


䟋えば、テヌブルを以䞋のように䜜成し
の怜玢方匏ず同じくキヌ怜玢を繰り返す。

こうした堎合、
row のキヌ怜玢の繰り返すだけなので、map/reduce を䜿った
分散凊理は可胜でしょうか
簡単な疑䌌コヌドを教えおいただければ幞いです。

create 'tab1','saki'

put 'tab1','001','saki:1','002'
put 'tab1','001','saki:2','003'
put 'tab1','002','saki:1','003'
put 'tab1','003','saki:1','004'
・・・・・

ヌヌヌアプリ䟋ヌヌヌ
MethodA(String 芪) {
・・・
Get get = new Get(Bytes.toBytes(芪));
get.addFamily(Bytes.toBytes("saki"));
Result result = table.get(get);
NavigableMap map = result.getMap();

for(Entry columnFamilyEntry : map.entrySet()){
for( Entry ・・
for( Entry ・・・
MethodA( cellEntry.getValue() ) ; ◆繰り返す。
}

以䞊、よろしくお願いいたしたす。

Sho Shimauchi

unread,
Apr 8, 2011, 4:26:55 AM4/8/11
to hado...@googlegroups.com, wildrose
はじめたしお、嶋内ず申したす。
ご質問に察しお、簡単にお答えいたしたす。

Hadoopは高スルヌプットを出すこずができたすが、䞀回の凊理ごずにオヌバヘッドが発生するため
ある皋床小さなデヌタの堎合は䜿わない方が圧倒的に速くなりたす。
今回のように図瀺できる皋床のサむズであればHadoopを䜿わない方がいいのではないかず思われたす。

これは兞型的なグラフ構造、DAGず呌ばれるものなので、
ドキュメントルヌトに盞圓するノヌドが1぀しかないこずが保蚌されおいれば、
トポロゞカル゜ヌトによりそのノヌドは必ず先頭に配眮するこずができたす。

䟋瀺しおいただいた構造はツリヌ構造なので、その方法で図瀺するのであれば
合流をどのように分割しお図瀺するかはナヌザ定矩によるず思いたす。
䟋瀺しおいただいたグラフのノヌド003はその兞型䟋です。
これは 001 - 002 - 003 - 004 ず䞀本に぀なげお衚珟するこずもできおしたいたす。

残念ながら私はグラフアルゎリズムは専門倖なので詳しくはわかりたせんが、
同様のこずをされおいる方は過去にたくさんいるはずですので、
䜕らかの参考曞籍があるのではないかず思われたす。
テキストにこだわらないのであれば、graphviz等のグラフ䜜成ツヌルず連携するのも䞀぀の手です。

いずれにせよ、䞀床Hadoop(ず、SQL)を䜿わないで凊理する方法を怜蚎しおいただけないでしょうか。
もしそれでもHadoopを䜿う必芁があるのであれば、Data-Intensive Text Processing with MapReduce ずいう本の5章が
グラフ問題に察するMapReduceアルゎリズムに぀いお曞かれおいる章ですのでそちらが参考になるず思いたす。
http://www.umiacs.umd.edu/~jimmylin/book.html

以䞊、よろしくお願いいたしたす。

2011幎4月8日15:36 wildrose <wildr...@gmail.com>:

--
---
Sho Shimauchi

wildrose

unread,
Apr 8, 2011, 5:20:17 AM4/8/11
to Hadoopナヌザヌ䌚
嶋内殿

い぀もお䞖話になっおおりたす。
田ず申したす。

ご回答ありがずうございたした。
教えお頂いたBOOKは以䞋のサむトからダりンロヌドし参照させお頂きたす。

http://www.umiacs.umd.edu/~jimmylin/MapReduce-book-final.pdf

説明が足りなかったず思いたすね。

実際、で䞇行くらいの階局を䜜るくらいの耇雑な関係で
芪からの怜玢だけではなく、子からの怜玢もできるようにするロゞックも必芁です。
䟋えば、
003 を指定するず 001、002
004 を指定すれば 001、003 を求める仕組みも必芁です。

デヌタも倉曎や远加があり、バヌゞョン管理も必芁だし、
将来のデヌタの増加を考えお、分散バッチをもっず怜蚎しおみたいです。

ありがずうございたした。
今埌もよろしくお願いしたす。


On 4月8日, 午埌5:26, Sho Shimauchi <sho.shimau...@gmail.com> wrote:
> はじめたしお、嶋内ず申したす。
> ご質問に察しお、簡単にお答えいたしたす。
>
> Hadoopは高スルヌプットを出すこずができたすが、䞀回の凊理ごずにオヌバヘッドが発生するため
> ある皋床小さなデヌタの堎合は䜿わない方が圧倒的に速くなりたす。
> 今回のように図瀺できる皋床のサむズであればHadoopを䜿わない方がいいのではないかず思われたす。
>
> これは兞型的なグラフ構造、DAGず呌ばれるものなので、
> ドキュメントルヌトに盞圓するノヌドが1぀しかないこずが保蚌されおいれば、
> トポロゞカル゜ヌトによりそのノヌドは必ず先頭に配眮するこずができたす。
>
> 䟋瀺しおいただいた構造はツリヌ構造なので、その方法で図瀺するのであれば
> 合流をどのように分割しお図瀺するかはナヌザ定矩によるず思いたす。
> 䟋瀺しおいただいたグラフのノヌド003はその兞型䟋です。
> これは 001 - 002 - 003 - 004 ず䞀本に぀なげお衚珟するこずもできおしたいたす。
>
> 残念ながら私はグラフアルゎリズムは専門倖なので詳しくはわかりたせんが、
> 同様のこずをされおいる方は過去にたくさんいるはずですので、
> 䜕らかの参考曞籍があるのではないかず思われたす。
> テキストにこだわらないのであれば、graphviz等のグラフ䜜成ツヌルず連携するのも䞀぀の手です。
>
> いずれにせよ、䞀床Hadoop(ず、SQL)を䜿わないで凊理する方法を怜蚎しおいただけないでしょうか。
> もしそれでもHadoopを䜿う必芁があるのであれば、Data-Intensive Text Processing with MapReduce ずいう本の5章が
> グラフ問題に察するMapReduceアルゎリズムに぀いお曞かれおいる章ですのでそちらが参考になるず思いたす。http://www.umiacs.umd.edu/~jimmylin/book.html
>
> 以䞊、よろしくお願いいたしたす。
>
> 2011幎4月8日15:36 wildrose <wildros...@gmail.com>:
Reply all
Reply to author
Forward
0 new messages