Metatron-discovery: Add a ingestion via data snapshot of data source type

Created on 4 Nov 2018  ยท  34Comments  ยท  Source: metatron-app/metatron-discovery

Is your feature request related to a problem? Please describe.
๋ฐ์ดํ„ฐ์†Œ์Šค ์ƒ์„ฑ ํƒ€์ž… ์ค‘ ๋ฐ์ดํ„ฐ ์Šค๋ƒ…์ƒท ๋ฐฉ์‹ ์ถ”๊ฐ€
๋ฐ์ดํ„ฐ ์Šค๋ƒ…์ƒท ํƒ€์ž…์€ StagingDB ์ƒ์„ฑ ๋ฐฉ์‹๊ณผ ๊ฑฐ์˜ ๋™์ผํ•ฉ๋‹ˆ๋‹ค.
์œ ์ผํ•˜๊ฒŒ ๋‹ค๋ฅธ ๋ถ€๋ถ„์ด 1์”ฌ ์žˆ๋Š”๋ฐ์š”.. ํ…Œ์ด๋ธ” ์„ ํƒํ•˜๋Š” ์”ฌ์ด ๋ฐ์ดํ„ฐ์Šค๋ƒ…์ƒท ์ด๋ฆ„ ์„ ํƒํ•˜๋Š” ๋ถ€๋ถ„์œผ๋กœ ๊ต์ฒด๋ฉ๋‹ˆ๋‹ค.

์ตœ๊ทผ์— StagingDB์•ˆ์— ํŒŒํ‹ฐ์…˜ ํ‚ค ๋ณ€๊ฒฝํ•˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์Šต๋‹ˆ๋‹ค.
ํ•ด๋‹น ๋ถ€๋ถ„์ด ์ด ์•ˆ์—๋„ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•˜๋‹ˆ #619 ์ด์Šˆ๋ฅผ ๊ผญ ์ฐธ๊ณ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Describe the solution you'd like
image
image
image
image
image

์•„๋ž˜ PPT๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”
๋ฐ์ดํ„ฐ์†Œ์Šค.pptx

@datasource new feature p1

All 34 comments

@metatron-app/design @AnnieHwang ์œ„์— Snapshot ๋ถ€๋ถ„์€ ๊ธฐํš ๋ณด๊ฐ•์ด ์ข€๋” ํ•„์š”ํ• ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
Snapshot ์„ ํƒ์ดํ›„, ๋งˆ์น˜ ๋Œ€์‹œ๋ณด๋“œ์—์„œ ๋ฐ์ดํ„ฐ ์†Œ์Šค ์„ ํƒํ•˜๋“ฏ์ด ๋ชฉ๋ก์ •๋ณด๊ฐ€ ํฌ๊ฒŒ ๋‚˜์˜ค๋ฉด ์–ด๋–จ๊นŒํ•˜๋Š”๋ฐ์š”.
์‚ฌ์šฉ์ž๋กœ ํ•˜์—ฌ๊ธˆ ์Šค๋ƒ…์ƒท ์ •๋ณด๋ฅผ ์ข€๋” ํ™•์ธํ•˜๊ณ  ๋ฐ์ดํ„ฐ ์†Œ์Šคํ™” ํ• ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์„ ํƒํ•˜๊ฒŒ๋”์š”.
ํ”„๋ฆฌ๋ทฐ/์ปฌ๋Ÿผ ์Šคํ‚ค๋งˆ ์„ค์ •์€ ๊ธฐ์กด ๋ฐฉ์‹๊ณผ ๋™์ผํ•˜์ง€๋งŒ,
์ดํ›„ ์ถ”๊ฐ€ ๊ณ ๋ ค์‚ฌํ•ญ์€ ์Šค๋ƒ…์ƒท์€ ์ผ๋ฐ˜ ๋กœ์ปฌํŒŒ์ผ/Hive/HDFS ๋กœ ์ €์žฅํƒ€์ž…์ด ์ง€์ •๋ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
์ด๋Ÿด๊ฒฝ์šฐ ๋’ค์— ์˜ต์…˜์ด ๋‹ฌ๋ผ์งˆ์ˆ˜ ์žˆ๋Š”๋ฐ์š”. ์ด๋ถ€๋ถ„๋„ ๊ณ ๋ ค๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ํ™•์ธ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@kyungtaak @joohokim1 ๋„ค ํ•ด๋‹น ๋ถ€๋ถ„ ํ™•์ธํ•ด์„œ ๊ธฐํš ๊ณ ๋ฏผํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

@AnnieHwang @kyungtaak @joohokim1
๋ฐ์ดํ„ฐ์†Œ์Šค ํƒ€์ž…์—์„œ ์Šค๋ƒ…์ƒท์„ ์„ ํƒํ–ˆ์„์‹œ ๋ณด์ด๋Š” ํ™”๋ฉด์„ ์•„๋ž˜์™€ ๊ฐ™์ด ์ˆ˜์ • ๊ธฐํšํ•˜์˜€์Šต๋‹ˆ๋‹ค.
2018-11-06 5 23 59
๊ทธ๋ฆฌ๊ณ  ์Šค๋ƒ…์ƒท์˜ ์ƒ์„ธ ์ •๋ณด๋ฅผ ๋ณผ์ˆ˜ ์žˆ๋Š” ํŒ์—… ๊ธฐํš๋„ ์ถ”๊ฐ€ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
2018-11-06 5 24 09
๊ฒ€ํ† ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@AnnieHwang @ecoloy
์ €๋Š” ๊ดœ์ฐฎ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@kyungtaak
์œ„์™€ ๊ฐ™์ด ์ง„ํ–‰ํ•œ๋‹ค๊ณ  ํ•  ๋•Œ, dataprep ์ธก์—์„œ ํ•  ์ผ์€ ์•„๋ž˜ 2๊ฐ€์ง€๋ผ๊ณ  ๋ณด๋ฉด ๋ ๊นŒ์š”?

  1. Snapshot ๋ฆฌ์ŠคํŒ… / ์„ ํƒ ํŽ˜์ด์ง€ ๊ตฌํ˜„ ๋ฐ ์Šค๋ƒ…์ƒท ์ƒ์„ธ ํŒ์—…๊ณผ ์—ฐ๊ฒฐ
  2. Snapshot ํ™•์ • ์„ ํƒ์‹œ ์ดํ›„ ๋ฐ์ดํ„ฐ ์†Œ์Šค ์ƒ์„ฑ์— ํ•„์š”ํ•œ ์ •๋ณด (URL, DB/Table name ๋“ฑ) ์ œ๊ณต

@AnnieHwang @kyungtaak @joohokim1
์ถ”๊ฐ€๋กœ ๋ฐ์ดํ„ฐ ํ”„๋ฆฌํผ๋ ˆ์ด์…˜ ๋ฉ”๋‰ด์˜ ์Šค๋ƒ…์ƒท ์ƒ์„ธ ํ™”๋ฉด์—์„œ๋„ ๋ฐ”๋กœ ๋ฐ์ดํ„ฐ์†Œ์Šค๋ฅผ ๋งŒ๋“œ๋Š” ์ˆ์ปท ๋ฒ„ํŠผ์ด ์ถ”๊ฐ€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ•ด๋‹น ๋ฒ„ํŠผ์ด ์ƒ์„ฑ๋˜๋Š” ๊ณณ์€ ํ”„๋ฆฌํผ๋ ˆ์ด์…˜ ํ™”๋ฉด์ด์ง€๋งŒ back๋‹จ์—์„œ ์‹œ์Šคํ…œ์ด ๋ฐ์ดํ„ฐ์†Œ์Šค์˜ ์ƒ์„ฑ ๋‹จ๊ณ„๋ฅผ ์ผ๋ถ€ ์ง„ํ–‰ํ•˜๋Š” ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— ์ฐธ๊ณ ํ•˜์‹ค์ˆ˜ ์žˆ๊ฒŒ ๊ธฐํš๋ฌธ์„œ๋ฅผ ๊ณต์œ ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
2018-11-13 2 29 50

์ด์Šˆ๋ฅผ ๋ณ„๋„๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ์ง„ํ–‰ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ํŒ๋‹จ๋˜์‹œ๋ฉด ํ”ผ๋“œ๋ฐฑ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@ecoloy ๋„ค ์Šค๋ƒ…์ƒท์—์„œ ๋ฐ์ดํ„ฐ์†Œ์Šค ์—ฐ๊ฒฐ๋˜๋Š” Flow ์ข‹์€๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ œ๊ฐ€ ๋ณด๊ธฐ์—” ์–ด์ฐจํ”ผ ์ € ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ๋„ ๊ฐ™์€ ํ™”๋ฉด์œผ๋กœ ์ ํ•‘ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ™์ด ์ด์Šˆ๋กœ ๋ฌถ์–ด๋„ ๋ ๊ฒƒ ๊ฐ™์€๋ฐ..๊ฐœ๋ฐœ๋ฆฌ๋”ฉํ•˜์‹œ๋Š” ๋ถ„๋“ค๊ณผ ๋…ผ์˜ํ•˜์‹œ๋ฉด ๋ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

@AnnieHwang ์ง€๊ธˆ ์ ์žฌ ์ „์ฒด ๋‹จ๊ณ„๋ฅผ ์–ด๋–ป๊ฒŒ ๋ณด์‹œ๊ณ  ๊ณ„์‹ ๊ฐ€์š”?
๊ฐ ์›์ฒœ ๋ฐ์ดํ„ฐ ์†Œ์Šค ํƒ€์ž…์— ๋”ฐ๋ผ, ์ ์žฌ flow๊ฐ€ ๋‹ค๋ฅด๊ฒŒ ๊ฐ„๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๊ฐ€๋Š”๊ฑด์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค. (flow ๊ฐ€ ์ •์˜๋œ ๋ถ€๋ถ„์ด ์žˆ์œผ๋ฉด ๊ณต์œ  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.)

@joohokim1 ๊ธฐํš flow ๋ฅผ ๋ณด๊ณ  ๊ฐœ๋ฐœํ•„์š”ํ•ญ๋ชฉ์„ ๋…ผ์˜ํ•˜๋ฉด ์ข‹์„๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

image
@AnnieHwang ์Šค๋ƒ…์ƒท์˜ ์ƒ์„ธํŒ์—… ์ˆ˜์ •๋œ๋ถ€๋ถ„ ๋””์ž์ธ ๊ณต์œ ๋“œ๋ฆฝ๋‹ˆ๋‹ค
์ƒ์„ฑํ™”๋ฉด์€ ๊ธฐ์กดํ™”๋ฉด ํ™œ์šฉ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค

@kyungtaak ์ง€๊ธˆ flow๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒ๊ฐํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.
(1) ๋ฐ์ดํ„ฐ์Šค๋ƒ…์ƒท ์ƒ์„ธ '๋ฐ์ดํ„ฐ์†Œ์Šค ์ƒ์„ฑ' ๋ฒ„ํŠผ ํด๋ฆญ -> (2) ๋ฐ์ดํ„ฐ์†Œ์Šค ํƒ€์ž… ์ค‘ '๋ฐ์ดํ„ฐ์Šค๋ƒ…์ƒท' ์ž๋™ ์„ ํƒ๋œ๋‹ค๊ณ  ๊ฐ€์ •ํ•จ (ํ™”๋ฉด์€ ์กด์žฌํ•˜์ง€ ์•Š์Œ) -> (3) ๋ฐ์ดํ„ฐ์Šค๋ƒ…์ƒท ๋ฆฌ์ŠคํŠธ ํ™”๋ฉด ์„ ํƒํ•˜๊ณ  ๋ฐ์ดํ„ฐ ๋ฏธ๋ฆฌ๋ณด๋Š” ํ™”๋ฉด -> (4) ๋ฐ์ดํ„ฐ ์Šคํ‚ค๋งˆ ์ •์˜ -> (5) ๋ฐฐ์น˜ ๋ฐ ๊ธฐํƒ€ ์„ค์ • -> (6) ๋ฐ์ดํ„ฐ์†Œ์Šค ์ด๋ฆ„ ์„ค์ •

๋ฐ์ดํ„ฐ์Šค๋ƒ…์ƒท์€ ํ˜„์žฌ๋Š” hive stagingDB์•ˆ ํ…Œ์ด๋ธ”๋กœ ๋–จ์–ด์ง€๊ณ  ์žˆ์œผ๋‹ˆ, ํ•ด๋‹น ๋ชฉ๋ก์€ ์‚ฌ์‹ค stagingDB์•ˆ ์ผ๋ถ€ ํ…Œ์ด๋ธ”๊ณผ ์ค‘๋ณต๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (ํ•˜์ง€๋งŒ ๋ฐ์ดํ„ฐ ํ”„๋žฉ์—์„œ์˜ ์œ ์—ฐํ•œ ์—ฐ๊ณ„๊ฐ€ ํ•„์š”ํ•ด์„œ ๋”ฐ๋กœ '๋ฐ์ดํ„ฐ์Šค๋ƒ…์ƒท' ํƒ€์ž…์œผ๋กœ ๋งŒ๋“ค์–ด flow๋ฅผ ์ •์˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค.) ๋”ฐ๋ผ์„œ ์›์ฒœ DB์— ๋งž๋Š” ์ปค๋„ฅ์…˜ ์ •๋ณด๋Š” ๋”ฐ๋กœ ํ•„์š”์—†์œผ๋ฉฐ, ๊ธฐ์กด stagingDB์ •๋ณด๋งŒ ํ•„์š”๋กœ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

@AnnieHwang @joohokim1 ์ผ๋‹จ (5) ๋ฒˆ์€ ์›์ฒœ์ธ Snapshot ์ด ์–ด๋””์— ์žˆ๋Š”์ง€์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์งˆ๊ฒƒ ๊ฐ™๋„ค์š”.
Local/StageDB(hive)/HDFS ์ด ์„ธ๊ฐ€์ง€๊ฐ€ ๋งž์„๊นŒ์š”? ์ด๋ถ€๋ถ„๋งŒ ์ •๋ฆฌ๋˜๋ฉด ๊ฐœ๋ฐœ ์ฐฉ์ˆ˜๋ฅผ ํ•ด๋ณด์•˜์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

@joohokim1 @kyungtaak @AnnieHwang @ecoloy
์ผ์ „์— ์˜ฌ๋ ค์ฃผ์‹  ๊ธฐ์•ˆ์„ 2๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆ  ์ •๋ฆฌํ•˜์˜€์Šต๋‹ˆ๋‹ค.

ํƒ€์ž…์— ๋”ฐ๋ฅธ ํ๋ฆ„๋„
flow

๊ณตํ†ตstep01 - ์Šค๋ƒ…์ƒท ์„ ํƒ
01

๊ณตํ†ต step01_1 - ์Šค๋ƒ…์ƒท ์ƒ์„ธ ํŒ์—…
01-1

๊ณตํ†ต step02 - Configure Schema
02

File step03 - Ingestion setting
file03

File step04 - Enter Datasource Name(์™„๋ฃŒ)
file04

StagingDB step03 - Ingestion setting
stagingdb03

StagingDB step04 - Enter Datasource Name(์™„๋ฃŒ)
stagingdb04

์‚ดํŽด๋ณด์‹œ๊ณ  ๋ถ€์กฑํ•œ ๋ถ€๋ถ„์€ ๊ฐ€์ด๋“œ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@deidera08 @AnnieHwang
Snapshot์„ ์ด์šฉํ•ด ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ์†Œ์Šค ์ƒ์„ธํ™”๋ฉด์—์„œ
ํ•˜๋‹จ์˜ Ingestion information ์˜์—ญ์— ๋…ธ์ถœํ•  ๋‚ด์šฉ์ด ๋น ์ง„๋“ฏ ํ•ฉ๋‹ˆ๋‹ค.
ํ™•์ธ ๋ถ€ํƒ๋“œ๋ ค์š”.

@joohokim1 @ufoscw @AnnieHwang
์ƒ์„ธํ™”๋ฉด์ด ๋ˆ„๋ฝ๋˜์—ˆ๋„ค์š”. ์ฃ„์†กํ•ฉ๋‹ˆ๋‹ค

๊ธฐ๋ณธ์ ์œผ๋กœ Datasource์—์„œ File๊ณผ StagingDB์™€ ํ™”๋ฉด๊ตฌ์„ฑ์ด ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋‚˜ Master data์ •๋ณด๋Š” Snapshot์œผ๋กœ ๋™์ผํ•˜๊ฒŒ ๋…ธ์ถœ๋˜์—ˆ์œผ๋ฉด ํ•ฉ๋‹ˆ๋‹ค.

  1. File type์˜ Snapshot์ผ ๊ฒฝ์šฐ
    file

  2. StagingDB type์˜ Snapshot์ผ ๊ฒฝ์šฐ
    stagingdb

@kyungtaak
์Šค๋ƒ…์ƒท์œผ๋กœ ์ƒ์„ฑ step1ํ™”๋ฉด์—์„œ
์ƒ์„ฑ๋œ ์Šค๋ƒ…์ƒท ๋ชฉ๋ก๊ณผ ์„ ํƒํ–ˆ์„๋•Œ ์šฐ์ธก์— ํ‘œ์‹œ๋˜๋Š” ์Šค๋ƒ…์ƒท์˜ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฐ์ดํ„ฐ๋Š” ์–ด๋–ค api๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ๋˜๋‚˜์š”?

@joohokim1 @ufoscw f/u ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@brandon-wonjune
Snapshot์„ ์ด์šฉํ•œ ๋ฐ์ดํ„ฐ์†Œ์Šค ์ƒ์„ฑ ํŒŒ๋ผ๋ฏธํ„ฐ ๊ตฌ์„ฑ์‹œ ์ฐธ๊ณ ํ•  ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

  1. "srcType" : "SNAPSHOT"
  2. ingestion.type ์€ Snapshot Type์— ๋”ฐ๋ผ ์•„๋ž˜์™€ ๊ฐ™์ด ๋งคํ•‘๋ฉ๋‹ˆ๋‹ค.
    SnapshotType -> ingestionType
    "STAGING DB" -> "hive"
    "FILE (CSV)" -> "local"
    "FILE (JSON)" -> "local"
    "HDFS (CSV)" -> "hdfs"
    "HDFS (JSON)" -> "hdfs"
  3. ingestionType์ด hdfs์ผ ๊ฒฝ์šฐ paths ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ๋ฐฐ์—ด
  4. snapshot ํŒŒ๋ผ๋ฏธํ„ฐ ์ถ”๊ฐ€

๊ธฐ์กด์— ์‚ฌ์šฉํ•˜์ง€์•Š๋˜ HDFS Type์˜ request ์ƒ˜ํ”Œ์ž…๋‹ˆ๋‹ค.

{
   "name":"HdfsFileIngestion",
   "dsType":"MASTER",
   "connType":"ENGINE",
   "srcType":"SNAPSHOT",
   "granularity":"DAY",
   "segGranularity":"MONTH",
   "fields":[
      {
         "name":"time",
         "type":"TIMESTAMP",
         "role":"TIMESTAMP",
         "seq":0
      },
      {
         "name":"d",
         "type":"TEXT",
         "role":"DIMENSION",
         "seq":1
      },
      {
         "name":"m1",
         "type":"DOUBLE",
         "role":"MEASURE",
         "aggrType":"SUM",
         "seq":2
      }
   ],
   "ingestion":{
      "type":"hdfs",
      "paths":[
         "hdfs://metatron-cluster/user/hive/dataprep/snapshots/ss_hdfs_csv.csv"
      ],
      "findRecursive":false,
      "format":{
         "type":"csv"
      },
      "jobProperties":{
         "mapreduce.map.memory.mb":"1024",
         "mapreduce.reduce.memory.mb":"1024",
         "mapreduce.map.cpu.vcores":"1",
         "mapreduce.reduce.cpu.vcores":"1"
      }
   },
   "snapshot":"/api/preparationsnapshots/ecfa6510-757c-47a3-bc29-fd84fc57a30c"
}

@brandon-wonjune
์Šค๋ƒ…์ƒท ๋ฏธ๋ฆฌ๋ณด๊ธฐ API๋Š” (GET) /preparationsnapshots/{ssId}/contents ์ด๊ณ , request param์œผ๋กœ offset๊ณผ target์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค๋ฉด,
http://localhost:4200/api/preparationsnapshots/269f1149-bfaa-4f25-8841-15b21fe3648b/contents?offset=0&target=10000 ์ฒ˜๋Ÿผ ํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๋” ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋”ฐ๋กœ ์ „๋‹ฌ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค.

@joohokim1 ์œ„์˜ API๋กœ ์‚ฌ์šฉ์ค‘์ธ๋ฐ์š” ๋‹ค์Œ๊ฐ™์€ ํ™”๋ฉด์—์„œ ์‚ฌ์šฉ์„ํ• ๋•Œ
field ๋‚ด๋ถ€์— role, logicalType ํ”„๋กœํผํ‹ฐ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
2019-02-18 4 23 58

@joohokim1 @AnnieHwang @brandon-wonjune @koeun222
์Šค๋ƒ…์ƒท์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ถˆ๋Ÿฌ์™€์ง€์ง€ ์•Š์„ ๊ฒฝ์šฐ ๋ฐ์ดํ„ฐ์†Œ์Šค ์ƒ์„ฑ์„ ๋”์ด์ƒ ์ง„ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
๋•Œ๋ฌธ์— ์ด ๊ฒฝ์šฐ ํ™”๋ฉด์— ์˜ค๋ฅ˜ ํ‘œ์‹œํ•˜๋Š” ๋ถ€๋ถ„์„ ๊ธฐํš์„œ์— ๋ณด์™„ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
๋”๋ถˆ์–ด ์Šค๋ƒ…์ƒท์˜ ์ •๋ณด๋ฅผ ํ˜„์žฌ์™€ ๋งž์ถฐ ์ˆ˜์ •ํ•˜์˜€์Šต๋‹ˆ๋‹ค.
2019-02-18 4 33 13

@brandon-wonjune

Snapshot์„ ๋น„๋กฏํ•œ dataprep์˜ ๋ชจ๋“  grid response๋Š” ๊ธฐ์กด datasource์˜ preview์™€๋Š” ๋‹ค๋ฅธ ํ˜•ํƒœ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

2019-02-18 4 50 41

๋ฌธ์ œ๋Š” role, logicalType์ธ๋ฐ์š”. ์›์น™์ ์œผ๋กœ ์ด๋“ค ์ •๋ณด๋Š” "๊ณตํ†ต step02 - Configure Schema" ํ™”๋ฉด์—์„œ ์ •ํ•ด์ง€๋Š” ๊ฒƒ ์ž…๋‹ˆ๋‹ค. ๋ง์”€ํ•˜์‹  context์—์„œ ์ด๋“ค ์ •๋ณด๊ฐ€ ํ•„์š”ํ•œ ๊ฒƒ์€ ์ดˆ๊ธฐ๊ฐ’ (๋˜๋Š” suggestion) ์„ ์œ„ํ•œ ๊ฒƒ์œผ๋กœ ์ถ”์ •๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ, ์ „๋‹ฌ๋˜๋Š” type์— ๋”ฐ๋ผ LONG, DOUBLE -> metric, TIMESTAMP -> timestamp ๋˜๋Š” dimension, ๋‚˜๋จธ์ง€ dimension ๊ทœ์น™์œผ๋กœ ์„ค์ •์„ ํ•˜๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๊ฐ ์ปฌ๋Ÿผ์˜ ํƒ€์ž…์„ ์–ป๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ ์Šคํฌ๋ฆฐ์ƒท์„ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

2019-02-18 5 01 01

๋˜, ์œ„์˜ ํ™”๋ฉด์„ ๊ทธ๋ฆฌ๋Š”๋ฐ์— ์ปฌ๋Ÿผ ๋‚ด์šฉ์ด ํ•„์š”ํ•  ๊ฒƒ ๊ฐ™์€๋ฐ์š”. ์ด๊ฒƒ์„ ์–ป๋Š” ๊ฒƒ์€ @paigechoi ๋‹˜๊ป˜ ๋ฌธ์˜ํ•ด์„œ ๊ด€๋ จ dataprep ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์‹œ๋ฉด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. (์œ„์˜ ์Šคํฌ๋ฆฐ์ƒท์— ์‚ด์ง ๋ณด์ด๋Š” rows ํ•ญ๋ชฉ์ž…๋‹ˆ๋‹ค)

์ฐธ๊ณ ๋กœ, ๋ชจ๋“  ํŒŒํŠธ์—์„œ preview์— ๋Œ€ํ•ด์„œ๋Š” ํ–ฅํ›„ dataprep์˜ response ํ˜•ํƒœ๋กœ ํ†ตํ•ฉ๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค. (https://github.com/metatron-app/metatron-discovery/issues/1224)

@ufoscw ์ƒ์„ฑ์‹œ ํŒŒ๋ผ๋ฉ”ํ„ฐ ๋ฌธ์˜๋“œ๋ฆฝ๋‹ˆ๋‹ค.
ingestion params ์—์„œ ์•„๋ž˜์˜ ๊ฐ’์€ local, hive, hdfs ๊ด€๊ณ„์—†์ด ํ•ญ์ƒ ๊ณ ์ •์ธ๊ฐ€์š”?

"findRecursive":false,
 "format":{
   "type":"csv"
 },

@brandon-wonjune
format์†์„ฑ ์€ local, hive, hdfs ํƒ€์ž…์— ๋ชจ๋‘ ํฌํ•จ๋˜์–ด์•ผ ํ•˜๊ณ 
findRecursive ์†์„ฑ์€ hdfs ํƒ€์ž…์ผ๊ฒฝ์šฐ๋งŒ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์šฐ์„ ์€ false๊ฐ’์œผ๋กœ ๋ณด๋‚ด๋„๋ก ๊ฐœ๋ฐœํ•ด์ฃผ์„ธ์š”.

@ufoscw snapshot file(CSV)๋กœ ๋ฐ์ดํ„ฐ์†Œ์Šค ์ƒ์„ฑ ํ…Œ์ŠคํŠธ ์ค‘ ๋ฌธ์˜๋“œ๋ฆฝ๋‹ˆ๋‹ค.
์ปฌ๋Ÿผ์ด ๋ชจ๋‘ DIMENSION์ผ ๊ฒฝ์šฐ๋Š” ingestion ์‹œ ์ด์ƒ์—†์ด ์ƒ์„ฑ์ด ๋˜๋‚˜ ์ปฌ๋Ÿผ์ค‘ MEASURE๊ฐ€ ์žˆ๋Š”๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

app.metatron.discovery.domain.datasource.DataSourceIngestionException: An error occurred while loading the data source : Exception: [io.druid.segment.incremental.OnheapIncrementalIndex.aggregate(OnheapIncrementalIndex.java:243), io.druid.segment.incremental.OnheapIncrementalIndex.factorizeAggs(OnheapIncrementalIndex.java:223), io.druid.segment.incremental.OnheapIncrementalIndex.addToFacts(OnheapIncrementalIndex.java:195), io.druid.segment.incremental.IncrementalIndex.addTimeAndDims(IncrementalIndex.java:445), io.druid.segment.incremental.IncrementalIndex.add(IncrementalIndex.java:440), io.druid.segment.realtime.plumber.Sink.add(Sink.java:160), io.druid.indexing.common.index.YeOldePlumberSchool$1.add(YeOldePlumberSchool.java:139), io.druid.indexing.common.task.IndexTask.generateSegment(IndexTask.java:415), io.druid.indexing.common.task.IndexTask.run(IndexTask.java:222), io.druid.indexing.overlord.ThreadPoolTaskRunner$ThreadPoolTaskRunnerCallable.call(ThreadPoolTaskRunner.java:458), io.druid.indexing.overlord.ThreadPoolTaskRunner$ThreadPoolTaskRunnerCallable.call(ThreadPoolTaskRunner.java:430), java.util.concurrent.FutureTask.run(FutureTask.java:266), ... more, Caused by: io.druid.data.Rows.parseDouble(Rows.java:65), io.druid.data.input.AbstractRow.getDoubleMetric(AbstractRow.java:51), io.druid.segment.ColumnSelectorFactories$FromInputRow$4.get(ColumnSelectorFactories.java:486), io.druid.query.aggregation.DoubleSumAggregator$4.aggregate(DoubleSumAggregator.java:125), io.druid.segment.incremental.OnheapIncrementalIndex.aggregate(OnheapIncrementalIndex.java:238), ... more, Caused by: sun.misc.FloatingDecimal.readJavaFormatString(FloatingDecimal.java:2043), sun.misc.FloatingDecimal.parseDouble(FloatingDecimal.java:110), java.lang.Double.parseDouble(Double.java:538), java.lang.Double.valueOf(Double.java:502), io.druid.data.Rows.tryParseDouble(Rows.java:185), io.druid.data.Rows.parseDouble(Rows.java:62), ... more]
    at app.metatron.discovery.domain.datasource.ingestion.job.IngestionJobRunner.ingestion(IngestionJobRunner.java:176)
    at app.metatron.discovery.domain.datasource.DataSourceEventHandler.lambda$checkCreateAuthority$0(DataSourceEventHandler.java:230)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

์•„๋ž˜๋Š” ์ƒ์„ฑ์‹œ ์‚ฌ์šฉ๋œ ํŒŒ๋ผ๋ฉ”ํ„ฐ ์ •๋ณด์ž…๋‹ˆ๋‹ค.

{
  "name": "1",
  "granularity": "SECOND",
  "segGranularity": "HOUR",
  "dsType": "MASTER",
  "srcType": "SNAPSHOT",
  "connType": "ENGINE",
  "fields": [
    {
      "name": "id",
      "type": "STRING",
      "logicalType": "STRING",
      "role": "DIMENSION",
      "seq": 0
    },
    {
      "name": "created_by",
      "type": "STRING",
      "logicalType": "STRING",
      "role": "DIMENSION",
      "seq": 1
    },
    {
      "name": "created_time",
      "type": "STRING",
      "logicalType": "TIMESTAMP",
      "role": "TIMESTAMP",
      "format": {
        "type": "time_format",
        "format": "yyyy-MM-dd'T'HH:mm:ss.SSSZZ",
        "timeZone": "Asia/Seoul",
        "locale": "en"
      },
      "seq": 2
    },
    {
      "name": "modified_by",
      "type": "STRING",
      "logicalType": "STRING",
      "role": "DIMENSION",
      "seq": 3
    },
    {
      "name": "modified_time",
      "type": "STRING",
      "logicalType": "STRING",
      "role": "DIMENSION",
      "seq": 4
    },
    {
      "name": "version",
      "type": "STRING",
      "logicalType": "INTEGER",
      "role": "MEASURE",
      "seq": 5
    },
    {
      "name": "ds_conn_type",
      "type": "STRING",
      "logicalType": "STRING",
      "role": "DIMENSION",
      "seq": 6
    },
    {
      "name": "ds_type",
      "type": "STRING",
      "logicalType": "STRING",
      "role": "DIMENSION",
      "seq": 7
    },
    {
      "name": "ds_engine_name",
      "type": "STRING",
      "logicalType": "STRING",
      "role": "DIMENSION",
      "seq": 8
    },
    {
      "name": "ds_granularity",
      "type": "STRING",
      "logicalType": "STRING",
      "role": "DIMENSION",
      "seq": 9
    }
  ],
  "ingestion": {
    "type": "local",
    "rollup": true,
    "format": {
      "type": "csv"
    },
    "path": "file:///Development/dataprep/snapshots/11414tafae.csv"
  },
  "snapshot": "/api/preparationsnapshots/70e51b99-f212-40c9-9169-dee3df9f2574"
}

์•„๋ž˜๋Š” ์ƒ์„ฑ์‹œ ์‚ฌ์šฉ๋œ ์Šค๋ƒ…์ƒท ์ •๋ณด์ž…๋‹ˆ๋‹ค.

{
  "status": "SUCCEEDED",
  "launchTime": "2019-02-19T07:13:04.000Z",
  "origDsDcId": "806942d7-682a-452a-81fa-e00812bbadee",
  "origDsDcImplementor": "MYSQL",
  "origDsDcName": "MySQL-localhost-3306",
  "origDsDcType": "JDBC",
  "origDsDcHostname": "localhost",
  "origDsDcPort": 3306,
  "origDsDcUsername": "polaris",
  "origDsDbName": "polaris_v2",
  "origDsTblName": "datasource",
  "origDsQueryStmt": "select * from polaris_v2.datasource",
  "origDsCreatedBy": "admin",
  "origDsCreatedTime": "2019-02-19T07:01:22.000Z",
  "origDsModifiedBy": "admin",
  "origDsModifiedTime": "2019-02-19T07:01:22.000Z",
  "dsCreatedBy": "admin",
  "dsCreatedTime": "2019-02-19T07:01:26.000Z",
  "dsModifiedBy": "admin",
  "dsModifiedTime": "2019-02-19T07:12:57.000Z",
  "origDsId": "78f4134b-ad8b-41b4-bed3-b90508191a4d",
  "origDsName": "datasource (MYSQL)",
  "origDsImportType": "DATABASE",
  "statusCat": "SUCCESS",
  "sourceInfo": {
    "dsCreatedBy": "admin",
    "origDsImportType": "DATABASE",
    "dsModifiedBy": "admin",
    "dsName": "datasource",
    "dsModifiedTime": "2019-02-19T07:12:57.000Z",
    "dsId": "321e17f0-d14a-42ef-81d3-6f269ab98b33",
    "origDsId": "78f4134b-ad8b-41b4-bed3-b90508191a4d",
    "origDsName": "datasource (MYSQL)",
    "dfName": "datasource (MYSQL)_0219_1601",
    "origDsModifiedBy": "admin",
    "origDsCreatedTime": "2019-02-19T07:01:22.000Z",
    "origDsTblName": "datasource",
    "origDsDbName": "polaris_v2",
    "origDsModifiedTime": "2019-02-19T07:01:22.000Z",
    "dfId": "1ebd7022-54b1-4b2f-b7ea-f6f9bb525b54",
    "dsCreatedTime": "2019-02-19T07:01:26.000Z",
    "origDsStoredUri": null,
    "origDsCreatedBy": "admin",
    "origDsQueryStmt": "select * from polaris_v2.datasource",
    "origDsConnectionInfo": {
      "origDsDcImplementor": "MYSQL",
      "origDsDcPort": 3306,
      "origDsDcHostname": "localhost",
      "origDsDcId": "806942d7-682a-452a-81fa-e00812bbadee",
      "origDsDcUsername": "polaris",
      "origDsDcUrl": null,
      "origDsDcName": "MySQL-localhost-3306",
      "origDsDcType ": "JDBC",
      "origDsDcDesc": null
    }
  },
  "ruleStringInfo": [
    {
      "ruleNo": 0,
      "ruleString": "create with: 78f4134b-ad8b-41b4-bed3-b90508191a4d",
      "jsonRuleString": "{\"with\":\"78f4134b-ad8b-41b4-bed3-b90508191a4d\",\"name\":\"create\"}",
      "shortRuleString": "create with datasource (MYSQL)",
      "valid": true
    },
    {
      "ruleNo": 1,
      "ruleString": "drop col: `datasource_contexts`",
      "jsonRuleString": "{\"col\":{\"value\":\"datasource_contexts\"},\"name\":\"drop\"}",
      "shortRuleString": "Drop datasource_contexts",
      "valid": true
    },
    {
      "ruleNo": 2,
      "ruleString": "drop col: `ds_fail_on_engine`",
      "jsonRuleString": "{\"col\":{\"value\":\"ds_fail_on_engine\"},\"name\":\"drop\"}",
      "shortRuleString": "Drop ds_fail_on_engine",
      "valid": true
    },
    {
      "ruleNo": 3,
      "ruleString": "drop col: `ds_fields_matched`",
      "jsonRuleString": "{\"col\":{\"value\":\"ds_fields_matched\"},\"name\":\"drop\"}",
      "shortRuleString": "Drop ds_fields_matched",
      "valid": true
    },
    {
      "ruleNo": 4,
      "ruleString": "drop col: `ds_include_geo`",
      "jsonRuleString": "{\"col\":{\"value\":\"ds_include_geo\"},\"name\":\"drop\"}",
      "shortRuleString": "Drop ds_include_geo",
      "valid": true
    },
    {
      "ruleNo": 5,
      "ruleString": "drop col: `ds_desc`",
      "jsonRuleString": "{\"col\":{\"value\":\"ds_desc\"},\"name\":\"drop\"}",
      "shortRuleString": "Drop ds_desc",
      "valid": true
    },
    {
      "ruleNo": 6,
      "ruleString": "drop col: `ingestion_conf`",
      "jsonRuleString": "{\"col\":{\"value\":\"ingestion_conf\"},\"name\":\"drop\"}",
      "shortRuleString": "Drop ingestion_conf",
      "valid": true
    },
    {
      "ruleNo": 7,
      "ruleString": "drop col: `ds_linked_workspaces`, `ds_name`, `ds_owner_id`, `ds_partition_keys`, `ds_partition_separator`, `ds_published`, `ds_seg_granularity`, `ds_src_type`, `ds_status`, `dc_id`, `ss_id`, `smy_id`",
      "jsonRuleString": "{\"col\":{\"value\":[\"ds_linked_workspaces\",\"ds_name\",\"ds_owner_id\",\"ds_partition_keys\",\"ds_partition_separator\",\"ds_published\",\"ds_seg_granularity\",\"ds_src_type\",\"ds_status\",\"dc_id\",\"ss_id\",\"smy_id\"]},\"name\":\"drop\"}",
      "shortRuleString": "Drop 12 columns",
      "valid": true
    }
  ],
  "engine": "EMBEDDED",
  "elapsedTime": {
    "milliseconds": 0,
    "hours": 0,
    "seconds": 1,
    "minutes": 0,
    "days": 0
  },
  "finishTime": "2019-02-19T07:13:05.000Z",
  "dsId": "321e17f0-d14a-42ef-81d3-6f269ab98b33",
  "storedUri": "file:///Development/dataprep/snapshots/11414tafae.csv",
  "dfId": "1ebd7022-54b1-4b2f-b7ea-f6f9bb525b54",
  "dfName": "datasource (MYSQL)_0219_1601",
  "connectionInfo": {
    "dcHostname": null,
    "dcPassword": null,
    "dcImplementor": null,
    "dcId": null,
    "dcName": null,
    "dcType": null,
    "dcDesc": null,
    "dcPort": null,
    "dcUsername": null,
    "dcUrl": null
  },
  "dsName": "datasource",
  "totalLines": 9,
  "ssType": "URI",
  "ssId": "70e51b99-f212-40c9-9169-dee3df9f2574",
  "jsonLineageInfo": {
    "transformRules": [
      {
        "ruleNo": 0,
        "ruleString": "create with: 78f4134b-ad8b-41b4-bed3-b90508191a4d",
        "jsonRuleString": "{\"with\":\"78f4134b-ad8b-41b4-bed3-b90508191a4d\",\"name\":\"create\"}",
        "shortRuleString": "create with datasource (MYSQL)",
        "valid": true
      },
      {
        "ruleNo": 1,
        "ruleString": "drop col: `datasource_contexts`",
        "jsonRuleString": "{\"col\":{\"value\":\"datasource_contexts\"},\"name\":\"drop\"}",
        "shortRuleString": "Drop datasource_contexts",
        "valid": true
      },
      {
        "ruleNo": 2,
        "ruleString": "drop col: `ds_fail_on_engine`",
        "jsonRuleString": "{\"col\":{\"value\":\"ds_fail_on_engine\"},\"name\":\"drop\"}",
        "shortRuleString": "Drop ds_fail_on_engine",
        "valid": true
      },
      {
        "ruleNo": 3,
        "ruleString": "drop col: `ds_fields_matched`",
        "jsonRuleString": "{\"col\":{\"value\":\"ds_fields_matched\"},\"name\":\"drop\"}",
        "shortRuleString": "Drop ds_fields_matched",
        "valid": true
      },
      {
        "ruleNo": 4,
        "ruleString": "drop col: `ds_include_geo`",
        "jsonRuleString": "{\"col\":{\"value\":\"ds_include_geo\"},\"name\":\"drop\"}",
        "shortRuleString": "Drop ds_include_geo",
        "valid": true
      },
      {
        "ruleNo": 5,
        "ruleString": "drop col: `ds_desc`",
        "jsonRuleString": "{\"col\":{\"value\":\"ds_desc\"},\"name\":\"drop\"}",
        "shortRuleString": "Drop ds_desc",
        "valid": true
      },
      {
        "ruleNo": 6,
        "ruleString": "drop col: `ingestion_conf`",
        "jsonRuleString": "{\"col\":{\"value\":\"ingestion_conf\"},\"name\":\"drop\"}",
        "shortRuleString": "Drop ingestion_conf",
        "valid": true
      },
      {
        "ruleNo": 7,
        "ruleString": "drop col: `ds_linked_workspaces`, `ds_name`, `ds_owner_id`, `ds_partition_keys`, `ds_partition_separator`, `ds_published`, `ds_seg_granularity`, `ds_src_type`, `ds_status`, `dc_id`, `ss_id`, `smy_id`",
        "jsonRuleString": "{\"col\":{\"value\":[\"ds_linked_workspaces\",\"ds_name\",\"ds_owner_id\",\"ds_partition_keys\",\"ds_partition_separator\",\"ds_published\",\"ds_seg_granularity\",\"ds_src_type\",\"ds_status\",\"dc_id\",\"ss_id\",\"smy_id\"]},\"name\":\"drop\"}",
        "shortRuleString": "Drop 12 columns",
        "valid": true
      }
    ]
  },
  "ssName": "11414tafae",
  "lineageInfo": "{\"transformRules\":[{\"ruleNo\":0,\"ruleString\":\"create with: 78f4134b-ad8b-41b4-bed3-b90508191a4d\",\"jsonRuleString\":\"{\\\"with\\\":\\\"78f4134b-ad8b-41b4-bed3-b90508191a4d\\\",\\\"name\\\":\\\"create\\\"}\",\"shortRuleString\":\"create with datasource (MYSQL)\",\"valid\":true},{\"ruleNo\":1,\"ruleString\":\"drop col: `datasource_contexts`\",\"jsonRuleString\":\"{\\\"col\\\":{\\\"value\\\":\\\"datasource_contexts\\\"},\\\"name\\\":\\\"drop\\\"}\",\"shortRuleString\":\"Drop datasource_contexts\",\"valid\":true},{\"ruleNo\":2,\"ruleString\":\"drop col: `ds_fail_on_engine`\",\"jsonRuleString\":\"{\\\"col\\\":{\\\"value\\\":\\\"ds_fail_on_engine\\\"},\\\"name\\\":\\\"drop\\\"}\",\"shortRuleString\":\"Drop ds_fail_on_engine\",\"valid\":true},{\"ruleNo\":3,\"ruleString\":\"drop col: `ds_fields_matched`\",\"jsonRuleString\":\"{\\\"col\\\":{\\\"value\\\":\\\"ds_fields_matched\\\"},\\\"name\\\":\\\"drop\\\"}\",\"shortRuleString\":\"Drop ds_fields_matched\",\"valid\":true},{\"ruleNo\":4,\"ruleString\":\"drop col: `ds_include_geo`\",\"jsonRuleString\":\"{\\\"col\\\":{\\\"value\\\":\\\"ds_include_geo\\\"},\\\"name\\\":\\\"drop\\\"}\",\"shortRuleString\":\"Drop ds_include_geo\",\"valid\":true},{\"ruleNo\":5,\"ruleString\":\"drop col: `ds_desc`\",\"jsonRuleString\":\"{\\\"col\\\":{\\\"value\\\":\\\"ds_desc\\\"},\\\"name\\\":\\\"drop\\\"}\",\"shortRuleString\":\"Drop ds_desc\",\"valid\":true},{\"ruleNo\":6,\"ruleString\":\"drop col: `ingestion_conf`\",\"jsonRuleString\":\"{\\\"col\\\":{\\\"value\\\":\\\"ingestion_conf\\\"},\\\"name\\\":\\\"drop\\\"}\",\"shortRuleString\":\"Drop ingestion_conf\",\"valid\":true},{\"ruleNo\":7,\"ruleString\":\"drop col: `ds_linked_workspaces`, `ds_name`, `ds_owner_id`, `ds_partition_keys`, `ds_partition_separator`, `ds_published`, `ds_seg_granularity`, `ds_src_type`, `ds_status`, `dc_id`, `ss_id`, `smy_id`\",\"jsonRuleString\":\"{\\\"col\\\":{\\\"value\\\":[\\\"ds_linked_workspaces\\\",\\\"ds_name\\\",\\\"ds_owner_id\\\",\\\"ds_partition_keys\\\",\\\"ds_partition_separator\\\",\\\"ds_published\\\",\\\"ds_seg_granularity\\\",\\\"ds_src_type\\\",\\\"ds_status\\\",\\\"dc_id\\\",\\\"ss_id\\\",\\\"smy_id\\\"]},\\\"name\\\":\\\"drop\\\"}\",\"shortRuleString\":\"Drop 12 columns\",\"valid\":true}]}",
  "ruleCntDone": 7,
  "ruleCntTotal": 7,
  "createdBy": {
    "type": "user",
    "username": "admin",
    "fullName": "Administrator",
    "email": "[email protected]"
  },
  "createdTime": "2019-02-19T07:13:04.000Z",
  "modifiedBy": {
    "type": "user",
    "username": "admin",
    "fullName": "Administrator",
    "email": "[email protected]"
  },
  "modifiedTime": "2019-02-19T07:13:05.000Z",
  "_links": {
    "self": {
      "href": "http://localhost:4200/api/preparationsnapshots/70e51b99-f212-40c9-9169-dee3df9f2574{?projection}",
      "templated": true
    }
  }
}

@brandon-wonjune
์•„๋งˆ Snapshot์„ ํ†ตํ•ด์„œ ๋งŒ๋“ค์–ด์ง„ csv์—๋Š” ํ—ค๋”์ •๋ณด๊ฐ€ ๋“ค์–ด ์žˆ์„๊ฒ๋‹ˆ๋‹ค.
๊ทธ๋Ÿฌ๋ฉด ingestion.removeFirstRow ๊ฐ’์ด true ํŒŒ๋ผ๋ฏธํ„ฐ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ด๋ ‡๊ฒŒ ํ•œ๋ฒˆ ํ…Œ์ŠคํŠธํ•ด๋ณด์‹œ๊ฒ ์–ด์š”?

@ufoscw
ํ…Œ์ŠคํŠธํ•œ ๊ฒฐ๊ณผ ์ •์ƒ์ ์œผ๋กœ ์™„๋ฃŒ๋ฉ๋‹ˆ๋‹ค.

ํ•œ๊ฐ€์ง€ ๋” ๋ฌธ์˜๋“œ๋ฆด๊ฒŒ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ์Šค๋ƒ…์ƒท์ด ์•„๋ž˜์™€ ๊ฐ™์ด ์ƒ์„ฑ๋˜๋Š” ๊ฒฝ์šฐ ingestion ๋‚ด๋ถ€์˜ format type์€ ์•„๋ž˜์™€ ๊ฐ™์€ ํ˜•ํƒœ๋กœ ์ฃผ๋ฉด๋ ๊นŒ์š”?
    "STAGING DB(ORC)" -> "orc"
    "STAGING DB(CSV)" -> "csv"
    "FILE,HDFS (CSV)" -> "csv"
    "FILE,HDFS (JSON)" -> "json"

2.์œ„์—์„œ ๋ง์”€ํ•˜์‹ ๊ฒƒ์ฒ˜๋Ÿผ removeFirstRow์— ๋Œ€ํ•ด์„œ๋Š” csv๋งŒ ํ•ด๋‹น๋˜๋Š”๊ฑด๊ฐ€์š”?

@brandon-wonjune

  1. ๋„ค. ๊ทธ๋ ‡๊ฒŒ ๋ณด๋‚ด์‹œ๋ฉด๋ฉ๋‹ˆ๋‹ค.
  2. ๋„ค File(csv)์—๋งŒ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

@joohokim1
ํ”„๋žฉํ™”๋ฉด์—์„œ ๋ฐ์ดํ„ฐ์†Œ์Šค๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ ์šฐ๋ ค๋˜๋Š” ๋ถ€๋ถ„์ด ์žˆ์–ด์„œ ์˜๊ฒฌ๋“œ๋ฆฝ๋‹ˆ๋‹ค.
ํ™”๋ฉด์€ ์Šค๋ƒ…์ƒท ์ƒ์„ธ ํŒ์—…์ž…๋‹ˆ๋‹ค.

  1. '๋ฐ์ดํ„ฐ์†Œ์Šค ์ƒ์„ฑ' ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ๋ฐ์ดํ„ฐ์†Œ์Šค ํ™”๋ฉด์œผ๋กœ ์ ํ”„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ƒ์„ฑ ์ทจ์†Œ๋ฅผ ํ•˜๋ฉด ๋ฐ์ดํ„ฐ์†Œ์Šค ๋ชฉ๋ก์œผ๋กœ ๋žœ๋”ฉํ•˜๋Š” ํ”Œ๋กœ์šฐ๋กœ ํ˜„์žฌ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๊ธธ์„ ์žƒ๋Š” ์ผ€์ด์Šค๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ, ์ตœ์†Œํ•œ ๋ฐ์ดํ„ฐ์†Œ์Šค ํ™”๋ฉด์œผ๋กœ ์ ํ”„ํ•˜๊ธฐ ์ „์— '๋ฐ์ดํ„ฐ์†Œ์Šค ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?'๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ์–ด๋–จ์ง€์š”-
  2. ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์„ ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ์†Œ์Šค๊ฐ€ ์ƒ์„ฑ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ๊ฒฝ์šฐ์— '๋ฐ์ดํ„ฐ์†Œ์Šค ์ƒ์„ฑ' ๋ฒ„ํŠผ์„ ์ˆจ๊ฒจ์ค˜์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์˜๊ฒฌ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค-

@minjung-cho @ksparknot

๋ง์”€์ฃผ์‹  2๊ฐœ ์˜๊ฒฌ ๋ชจ๋‘ ๋™์˜ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค~

  1. '๋ฐ์ดํ„ฐ์†Œ์Šค ์ƒ์„ฑ' ๋ฒ„ํŠผ์„ ํด๋ฆญํ–ˆ์„ ๋•Œ ๋ฐ์ดํ„ฐ์†Œ์Šค ํ™”๋ฉด์œผ๋กœ ์ ํ”„ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋•Œ ์ƒ์„ฑ ์ทจ์†Œ๋ฅผ ํ•˜๋ฉด ๋ฐ์ดํ„ฐ์†Œ์Šค ๋ชฉ๋ก์œผ๋กœ ๋žœ๋”ฉํ•˜๋Š” ํ”Œ๋กœ์šฐ๋กœ ํ˜„์žฌ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์‚ฌ์šฉ์ž๊ฐ€ ๊ธธ์„ ์žƒ๋Š” ์ผ€์ด์Šค๊ฐ€ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ, ์ตœ์†Œํ•œ ๋ฐ์ดํ„ฐ์†Œ์Šค ํ™”๋ฉด์œผ๋กœ ์ ํ”„ํ•˜๊ธฐ ์ „์— '๋ฐ์ดํ„ฐ์†Œ์Šค ํ™”๋ฉด์œผ๋กœ ์ด๋™ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?'๋ผ๋Š” ๋ฉ”์‹œ์ง€๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๊ฒƒ์ด ์–ด๋–จ์ง€์š”-

@minjung-cho @joohokim1 ui ๋‚ด์—์„œ ์ƒ์„ฑ๋˜๋Š” ์ง€์ ์— ๋งž๊ฒŒ view histroy ๊ด€๋ฆฌ๋ฅผ ํ•ด์•ผ ๋งž์„ ๊ฒƒ ๊ฐ™์€๋ฐ์š”.
๊ตณ์ด ๋ฐ์ดํ„ฐ์†Œ์Šค ์ƒ์„ฑํ™”๋ฉด์œผ๋กœ ์ง„์ž…ํ•ฉ๋‹ˆ๋‹ค๋ผ๋Š” ๊ฒƒ์„ ํ‘œ์‹œํ•ด์ค˜์•ผํ•˜๋Š”์ง€ ์˜๋ฌธ์ž…๋‹ˆ๋‹ค. ์ฐธ๊ณ ๋กœ, prep ๋ง๊ณ  datasource ์ƒ์„ฑ ํ™”๋ฉด์— ์ง„์ž…ํ•˜๋Š” ๊ณณ์€ workbench ๋„ ์žˆ์Šต๋‹ˆ๋‹ค. @eltriny @brandon-wonjune ui ๋‚ด์—์„œ ๋ฐ์ดํ„ฐ์†Œ์Šค ์ƒ์„ฑ๋‹จ๊ณ„ ์ทจ์†Œ์‹œ ๋ฐ์ดํ„ฐ ์†Œ์Šค ์ƒ์„ฑ์ด ์‹œ์ž‘๋˜์—ˆ๋˜ ์œ„์น˜๋กœ ์ด๋™์ด ๊ฐ€๋Šฅํ•œ์ง€ ๊ฒ€ํ†  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

@kyungtaak ๋ง์”€์ฃผ์‹  ๊ฒƒ์— ๋™์˜ํ•˜๊ณ ์š”, ํ”„๋ก ํŠธ์—์„œ ๋‹น์žฅ์€ ๊ตฌ์กฐ ๋ณ€๊ฒฝ์ด ์–ด๋ ต๋‹ค๋Š” ์˜๊ฒฌ์ด ์žˆ์œผ์…”์„œ 1๋ฒˆ ์•ˆ์„ ์ œ์•ˆ๋“œ๋ ธ์Šต๋‹ˆ๋‹ค

@kyungtaak ํ˜„์žฌ๊ตฌ์กฐ์ƒ workbench ์ฒ˜๋Ÿผ ํ•  ์ˆ˜์—†์Šต๋‹ˆ๋‹ค.
workbench์˜ ๊ฒฝ์šฐ workbench์—์„œ๋งŒ source์ƒ์„ฑ์„ ๋„์šฐ์ง€๋งŒ
snapshot์˜ ๊ฒฝ์šฐ snapshot detail์—์„œ source ์ƒ์„ฑ์„ ๋„์šฐ๊ณ , source์ชฝ์—์„œ๋Š” snapshot detail์„ ๋„์šฐ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“ˆ์ด ์ถฉ๋Œ์ด ๋‚ฉ๋‹ˆ๋‹ค.
์ด๊ฒƒ์„ ํ•ด๊ฒฐํ•˜๋ ค๋ฉด ํ˜„์žฌ ๊ตฌ์กฐ๋ฅผ ์ˆ˜์ •ํ•ด์•ผ๋ฉ๋‹ˆ๋‹ค.

@brandon-wonjune ๊ทธ๋ ‡๋‹ค๋ฉด, ๊ตฌ์กฐ ์ˆ˜์ •์„ ํ•ด์•ผํ• ๊ฒƒ ๊ฐ™์€๋ฐ์š”. ๊ฒ€ํ†  ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

joohokim1 picture joohokim1  ยท  9Comments

deidera08 picture deidera08  ยท  4Comments

Taehui picture Taehui  ยท  3Comments

minjung-cho picture minjung-cho  ยท  3Comments

AnnieHwang picture AnnieHwang  ยท  9Comments