๐ SQL Server ๋ฐ์ดํฐ๋ฅผ Hive๋ก ์ฎ๊ธฐ์๋ ค๋ ๋ถ
์ฒซ ๋ฒ์งธ ๋ง์ด๊ทธ๋ ์ด์ ์ดํ, ๋ฐ์ดํฐ๋ฅผ ๊ณ์ ๋ฎ์ด์ฐ๋ ๋ฐฉ์์ ์ฌ์ฉํ๋ค๊ฐ, ๋๋ฌด ๋ต๋ตํด์ ์ด์ด์ฐ๋ ๋ฐฉ์์ ์ฑํ
์๊ณ์ด ๋ฐ์ดํฐ๊ฐ ๊ธฐ๋ฐ์ผ ๋, ์ ๋ง ์ ์ฉํ๋คโโ ๊ฐ์ถ โโโโ
Q: Sqoop์ ์ฌ์ฉํ๋ฉด ๋์ค์ ์ธ RDB์์ HDFS๋ก
๋ฐ์ดํฐ๋ฅผ ๋ง์ด๊ทธ๋ ์ด์
์ ํ ์ ์๋ ๊ฑด ์๋๋ฐ...
๋งค์ผ ๋ฎ์ด์ฐ๊ธฐ๋ฅผ ํ๋๊น ์๊ฐ ์์๊ฐ ๋๋ฌด ๊ธธ์ด์๐ฅ
A: ์~ ์ธ์ง ๋ง์๊ณ ~ ์ ์ผ๋จ Sqoop ์ปค๋งจ๋ฉ ์ฌ์ฉ ํ,
Hive์์ ํ
์ด๋ธ์ ์์ฑํ๋ ๋ฐฉ๋ฒ๊น์ง ์์์ฃ ?
์ค๋ง ํ
์ด๋ธ ์์ฑํ๊ณ 'load data inpath~' ์ปค๋งจ๋ฉ๊น์ง ์ฐ์์ง ์์ฃ ?๐
Q: ์... 'load data inpath'๋ฅผ ์ฌ์ฉํ์ง ์๊ณ
HDFS ๋ฐ์ดํฐ๋ฅผ Hive์ ์ ์ฌํ ์๊ฐ ์๋์??๐ฒ
A: Oh... jesus cr.. ์.. ๊ทธ๋ด ์ ์์ฃ ๐
๊ทธ๋ผ 'load data inpath~' ์ปค๋งจ๋ฉ ์์ด Hive ํ
์ด๋ธ๋ก
๋ฐ์ดํฐ๋ฅผ ์ ์ฌํ๋ ๋ฐฉ๋ฒ๊ณผ
'Sqoop์ ์ฌ์ฉํ์ฌ ๋ฐ์ดํฐ ์ด์ด์ฐ๊ธฐ' ๋ฐฉ๋ฒ์ ๋ํด
ํ ๋ฒ ๋์ ์ฌ๋๋ฆฌ๊ฒ ์ต๋๋ค.
sqoop import
--username xxxx
--password xxxxx
--num-mappers 1
--connect "jdbc:sqlserver://118.219.11.126:1566;database=ctf_spc"
--query "select a.xxxx, count(a.xx) as xxx
from aaaaa a with (nolock)
inner join bbbbb b with (nolock)
on a.xxx = b.yyy and
a.xxx = b.yyy and
a.xxx = b.yyy and
a.xxx = b.yyy and
a.xxx = b.yyy and
a.xxx = b.yyy and
a.xxx = b.yyy
inner join ccccc c
on b.yyy = c.zzz and
b.yyyy = c.zzzz and
b.yyyyy = c.zzzzz
inner join ddddd d
on b.yyy = d.qqq and
b.yyy = d.qqq and
b.yyy = d.qqq and
b.yyy = d.qqq and
b.yyy = d.qqq
where \$CONDITIONS
group by a.xxx"
--delete-target-dir
--target-dir /date_data_count/
--as-textfile
create external table seokjin_date_data_count (F_WORKDATE DATE, data_count INT)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
stored as textfile
location '/date_data_count';
A: ์ฐ์ ์ ์ฒซ ๋ฒ์งธ ์ปค๋งจ๋ฉ์์ '--delete-target-dir' ๊ณผ
'--target-dir' ์ต์
์ ๋ด์ฃผ์ธ์.
'--delete-target-dir'์ ๋ง์ด๊ทธ๋ ์ด์
ํ๊ธฐ ์ ,
๋์ ๋๋ ํฐ๋ฆฌ๊ฐ ๊ธฐ ์กด์ฌํ๋์ง ํ์ธํ์ฌ ์ญ์ ํด์ฃผ๋ ์ต์
์ด์์.
๊ทธ ํ, '--target-dir'์ ์ฌ์ฉํ์ฌ ๋์ ๋๋ ํฐ๋ฆฌ๋ฅผ ์์ฑํ๊ณ
๋ง์ด๊ทธ๋ ์ด์
์ ์งํํฉ๋๋ค๐
A: ๋ ๋ฒ์งธ ์ปค๋งจ๋ฉ์ด ์ง๋ฌธ์ ๋ถ์ด ๊ถ๊ธํดํ์๋
'load data inpath~' ์์ด
๋ค์ด๋ ํธ๋ก Hive ํ
์ด๋ธ์์ HDFS ๋ด ๋ฐ์ดํฐ๋ฅผ ํ์ธํ ์ ์๋ ์์
๋๋ค.
๋ง์ง๋ง์ 'location~' ๊ตฌ๋ฌธ์ ์ถ๊ฐํ๋๋ฐ
์ด ๋, ๋ก์ผ์ด์
์
์ฒซ ๋ฒ์งธ ์ปค๋งจ๋ฉ์ '--target-dir'์์ ์ค์ ํ ๋๋ ํฐ๋ฆฌ๋ช
๊ณผ
๋์ผํ๊ฒ ์ค์ ํด์ผํฉ๋๋ค๐๐
sqoop import
--username xxxx
--password xxxxx
--num-mappers 1
--connect "jdbc:sqlserver://118.219.11.126:1566;database=ctf_spc"
--query "select a.xxxx, count(a.xx) as xxx
from aaaaa a with (nolock)
inner join bbbbb b with (nolock)
on a.xxx = b.yyy and
a.xxx = b.yyy and
a.xxx = b.yyy and
a.xxx = b.yyy and
a.xxx = b.yyy and
a.xxx = b.yyy and
a.xxx = b.yyy
inner join ccccc c
on b.yyy = c.zzz and
b.yyyy = c.zzzz and
b.yyyyy = c.zzzzz
inner join ddddd d
on b.yyy = d.qqq and
b.yyy = d.qqq and
b.yyy = d.qqq and
b.yyy = d.qqq and
b.yyy = d.qqq
where a.DATE = '2022-07-21' and
\$CONDITIONS
group by a.xxx"
--target-dir /date_data_count/
--as-textfile
--append
A: ์ถ๊ฐ ์ด์ ์์ ๋ณด๋ฉด ์๊ณ์ด ๋ฐ์ดํฐ ์ฌ์ฉ ์, ์ถ์ฒํ๋ค๊ณ ํ์์ฅฌ?
'where' ๊ตฌ๋ฌธ์ ๋ณด์๋ฉด ํน์ ๋ ์ง๋ฅผ ์ถ๊ฐํ๋ ค๊ณ ํ๋ ๋ชจ์ต์ด ๋ณด์
๋๋ค.
๊ทธ๋ฆฌ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ด์ด์ฐ๋ ค๋ ๋ชฉ์ ์ด๊ธฐ ๋๋ฌธ์
'--delete-target-dir' ์ต์
์ด ์ฌ๋ผ์ง๊ณ ,
๋ง์ง๋ง์ '--append' ์ต์
์ด ์ถ๊ฐ๋ ๊ฒ์ ํ์ธํ ์ ์์ด์๐
์์ ๋ฐฉ์์ ๋ฐ๋ฅด๋ฉด, ๋์ด์ ๋ฐ์ดํฐ ๋ฎ์ด์ฐ๊ธฐ๋ก ์ธํด ์์ํ ์๊ฐ๋ค์ ์๋ ์ ์๋ต๋๋ค๐
์๊ฐ์ ๊ธ์ด๋๊น์~~Time is Gold