Is your feature request related to a problem? Please describe.
๋ฐ์ดํฐ์์ค ์์ฑ ํ์
์ค ๋ฐ์ดํฐ ์ค๋
์ท ๋ฐฉ์ ์ถ๊ฐ
๋ฐ์ดํฐ ์ค๋
์ท ํ์
์ StagingDB ์์ฑ ๋ฐฉ์๊ณผ ๊ฑฐ์ ๋์ผํฉ๋๋ค.
์ ์ผํ๊ฒ ๋ค๋ฅธ ๋ถ๋ถ์ด 1์ฌ ์๋๋ฐ์.. ํ
์ด๋ธ ์ ํํ๋ ์ฌ์ด ๋ฐ์ดํฐ์ค๋
์ท ์ด๋ฆ ์ ํํ๋ ๋ถ๋ถ์ผ๋ก ๊ต์ฒด๋ฉ๋๋ค.
์ต๊ทผ์ StagingDB์์ ํํฐ์
ํค ๋ณ๊ฒฝํ๋ ๋ถ๋ถ์ด ์์ต๋๋ค.
ํด๋น ๋ถ๋ถ์ด ์ด ์์๋ ๋ฐ์๋์ด์ผ ํ๋ #619 ์ด์๋ฅผ ๊ผญ ์ฐธ๊ณ ๋ถํ๋๋ฆฝ๋๋ค.
Describe the solution you'd like





์๋ PPT๋ฅผ ์ฐธ๊ณ ํ์ธ์
๋ฐ์ดํฐ์์ค.pptx
@metatron-app/design @AnnieHwang ์์ Snapshot ๋ถ๋ถ์ ๊ธฐํ ๋ณด๊ฐ์ด ์ข๋ ํ์ํ ๊ฒ ๊ฐ์ต๋๋ค.
Snapshot ์ ํ์ดํ, ๋ง์น ๋์๋ณด๋์์ ๋ฐ์ดํฐ ์์ค ์ ํํ๋ฏ์ด ๋ชฉ๋ก์ ๋ณด๊ฐ ํฌ๊ฒ ๋์ค๋ฉด ์ด๋จ๊นํ๋๋ฐ์.
์ฌ์ฉ์๋ก ํ์ฌ๊ธ ์ค๋
์ท ์ ๋ณด๋ฅผ ์ข๋ ํ์ธํ๊ณ ๋ฐ์ดํฐ ์์คํ ํ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ํํ๊ฒ๋์.
ํ๋ฆฌ๋ทฐ/์ปฌ๋ผ ์คํค๋ง ์ค์ ์ ๊ธฐ์กด ๋ฐฉ์๊ณผ ๋์ผํ์ง๋ง,
์ดํ ์ถ๊ฐ ๊ณ ๋ ค์ฌํญ์ ์ค๋
์ท์ ์ผ๋ฐ ๋ก์ปฌํ์ผ/Hive/HDFS ๋ก ์ ์ฅํ์
์ด ์ง์ ๋ ์ ์๋ค๊ณ ํฉ๋๋ค.
์ด๋ด๊ฒฝ์ฐ ๋ค์ ์ต์
์ด ๋ฌ๋ผ์ง์ ์๋๋ฐ์. ์ด๋ถ๋ถ๋ ๊ณ ๋ ค๊ฐ ํ์ํฉ๋๋ค. ํ์ธ ๋ถํ๋๋ฆฝ๋๋ค.
@kyungtaak @joohokim1 ๋ค ํด๋น ๋ถ๋ถ ํ์ธํด์ ๊ธฐํ ๊ณ ๋ฏผํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค.
@AnnieHwang @kyungtaak @joohokim1
๋ฐ์ดํฐ์์ค ํ์
์์ ์ค๋
์ท์ ์ ํํ์์ ๋ณด์ด๋ ํ๋ฉด์ ์๋์ ๊ฐ์ด ์์ ๊ธฐํํ์์ต๋๋ค.

๊ทธ๋ฆฌ๊ณ ์ค๋
์ท์ ์์ธ ์ ๋ณด๋ฅผ ๋ณผ์ ์๋ ํ์
๊ธฐํ๋ ์ถ๊ฐํ์์ต๋๋ค.

๊ฒํ ๋ถํ๋๋ฆฝ๋๋ค. ๊ฐ์ฌํฉ๋๋ค.
@AnnieHwang @ecoloy
์ ๋ ๊ด์ฐฎ์ ๊ฒ ๊ฐ์ต๋๋ค.
@kyungtaak
์์ ๊ฐ์ด ์งํํ๋ค๊ณ ํ ๋, dataprep ์ธก์์ ํ ์ผ์ ์๋ 2๊ฐ์ง๋ผ๊ณ ๋ณด๋ฉด ๋ ๊น์?
@AnnieHwang @kyungtaak @joohokim1
์ถ๊ฐ๋ก ๋ฐ์ดํฐ ํ๋ฆฌํผ๋ ์ด์
๋ฉ๋ด์ ์ค๋
์ท ์์ธ ํ๋ฉด์์๋ ๋ฐ๋ก ๋ฐ์ดํฐ์์ค๋ฅผ ๋ง๋๋ ์์ปท ๋ฒํผ์ด ์ถ๊ฐ๋์ด์ผ ํฉ๋๋ค. ํด๋น ๋ฒํผ์ด ์์ฑ๋๋ ๊ณณ์ ํ๋ฆฌํผ๋ ์ด์
ํ๋ฉด์ด์ง๋ง back๋จ์์ ์์คํ
์ด ๋ฐ์ดํฐ์์ค์ ์์ฑ ๋จ๊ณ๋ฅผ ์ผ๋ถ ์งํํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์ฐธ๊ณ ํ์ค์ ์๊ฒ ๊ธฐํ๋ฌธ์๋ฅผ ๊ณต์ ๋๋ฆฝ๋๋ค.

์ด์๋ฅผ ๋ณ๋๋ก ๋ถ๋ฆฌํ์ฌ ์งํํด์ผ ํ๋ค๊ณ ํ๋จ๋์๋ฉด ํผ๋๋ฐฑ ๋ถํ๋๋ฆฝ๋๋ค.
@ecoloy ๋ค ์ค๋ ์ท์์ ๋ฐ์ดํฐ์์ค ์ฐ๊ฒฐ๋๋ Flow ์ข์๊ฒ ๊ฐ์ต๋๋ค. ์ ๊ฐ ๋ณด๊ธฐ์ ์ด์ฐจํผ ์ ๋ฒํผ์ ๋๋ฌ๋ ๊ฐ์ ํ๋ฉด์ผ๋ก ์ ํํ๊ธฐ ๋๋ฌธ์ ๊ฐ์ด ์ด์๋ก ๋ฌถ์ด๋ ๋ ๊ฒ ๊ฐ์๋ฐ..๊ฐ๋ฐ๋ฆฌ๋ฉํ์๋ ๋ถ๋ค๊ณผ ๋ ผ์ํ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
@AnnieHwang ์ง๊ธ ์ ์ฌ ์ ์ฒด ๋จ๊ณ๋ฅผ ์ด๋ป๊ฒ ๋ณด์๊ณ ๊ณ์ ๊ฐ์?
๊ฐ ์์ฒ ๋ฐ์ดํฐ ์์ค ํ์
์ ๋ฐ๋ผ, ์ ์ฌ flow๊ฐ ๋ค๋ฅด๊ฒ ๊ฐ๋ค๊ณ ๊ฐ์ ํ๊ณ ๊ฐ๋๊ฑด์ง ๊ถ๊ธํฉ๋๋ค. (flow ๊ฐ ์ ์๋ ๋ถ๋ถ์ด ์์ผ๋ฉด ๊ณต์ ๋ถํ๋๋ฆฝ๋๋ค.)
@joohokim1 ๊ธฐํ flow ๋ฅผ ๋ณด๊ณ ๊ฐ๋ฐํ์ํญ๋ชฉ์ ๋ ผ์ํ๋ฉด ์ข์๊ฒ ๊ฐ์ต๋๋ค.

@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๊ฐ์ง ๊ฒฝ์ฐ๋ก ๋๋ ์ ๋ฆฌํ์์ต๋๋ค.
ํ์
์ ๋ฐ๋ฅธ ํ๋ฆ๋
๊ณตํตstep01 - ์ค๋
์ท ์ ํ
๊ณตํต step01_1 - ์ค๋
์ท ์์ธ ํ์
๊ณตํต step02 - Configure Schema
File step03 - Ingestion setting
File step04 - Enter Datasource Name(์๋ฃ)
StagingDB step03 - Ingestion setting
StagingDB step04 - Enter Datasource Name(์๋ฃ)
์ดํด๋ณด์๊ณ ๋ถ์กฑํ ๋ถ๋ถ์ ๊ฐ์ด๋ ๋ถํ๋๋ฆฝ๋๋ค.
@deidera08 @AnnieHwang
Snapshot์ ์ด์ฉํด ์์ฑ๋ ๋ฐ์ดํฐ์์ค ์์ธํ๋ฉด์์
ํ๋จ์ Ingestion information ์์ญ์ ๋
ธ์ถํ ๋ด์ฉ์ด ๋น ์ง๋ฏ ํฉ๋๋ค.
ํ์ธ ๋ถํ๋๋ ค์.
@joohokim1 @ufoscw @AnnieHwang
์์ธํ๋ฉด์ด ๋๋ฝ๋์๋ค์. ์ฃ์กํฉ๋๋ค
๊ธฐ๋ณธ์ ์ผ๋ก Datasource์์ File๊ณผ StagingDB์ ํ๋ฉด๊ตฌ์ฑ์ด ๊ฐ์ต๋๋ค.
๊ทธ๋ฌ๋ Master data์ ๋ณด๋ Snapshot์ผ๋ก ๋์ผํ๊ฒ ๋
ธ์ถ๋์์ผ๋ฉด ํฉ๋๋ค.
File type์ Snapshot์ผ ๊ฒฝ์ฐ

StagingDB type์ Snapshot์ผ ๊ฒฝ์ฐ

@kyungtaak
์ค๋
์ท์ผ๋ก ์์ฑ step1ํ๋ฉด์์
์์ฑ๋ ์ค๋
์ท ๋ชฉ๋ก๊ณผ ์ ํํ์๋ ์ฐ์ธก์ ํ์๋๋ ์ค๋
์ท์ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ๋ฐ์ดํฐ๋ ์ด๋ค api๋ฅผ ์ฌ์ฉํด์ผ ๋๋์?
@joohokim1 @ufoscw f/u ๋ถํ๋๋ฆฝ๋๋ค.
@brandon-wonjune
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 ํ๋กํผํฐ๊ฐ ํ์ํฉ๋๋ค.

@joohokim1 @AnnieHwang @brandon-wonjune @koeun222
์ค๋
์ท์ ๋ฐ์ดํฐ๊ฐ ๋ถ๋ฌ์์ง์ง ์์ ๊ฒฝ์ฐ ๋ฐ์ดํฐ์์ค ์์ฑ์ ๋์ด์ ์งํํ ์ ์์ต๋๋ค.
๋๋ฌธ์ ์ด ๊ฒฝ์ฐ ํ๋ฉด์ ์ค๋ฅ ํ์ํ๋ ๋ถ๋ถ์ ๊ธฐํ์์ ๋ณด์ํ์์ต๋๋ค.
๋๋ถ์ด ์ค๋
์ท์ ์ ๋ณด๋ฅผ ํ์ฌ์ ๋ง์ถฐ ์์ ํ์์ต๋๋ค.

@brandon-wonjune
Snapshot์ ๋น๋กฏํ dataprep์ ๋ชจ๋ grid response๋ ๊ธฐ์กด datasource์ preview์๋ ๋ค๋ฅธ ํํ๋ฅผ ๊ฐ๊ณ ์์ต๋๋ค.

๋ฌธ์ ๋ role, logicalType์ธ๋ฐ์. ์์น์ ์ผ๋ก ์ด๋ค ์ ๋ณด๋ "๊ณตํต step02 - Configure Schema" ํ๋ฉด์์ ์ ํด์ง๋ ๊ฒ ์ ๋๋ค. ๋ง์ํ์ context์์ ์ด๋ค ์ ๋ณด๊ฐ ํ์ํ ๊ฒ์ ์ด๊ธฐ๊ฐ (๋๋ suggestion) ์ ์ํ ๊ฒ์ผ๋ก ์ถ์ ๋ฉ๋๋ค. ๋ฐ๋ผ์, ์ ๋ฌ๋๋ type์ ๋ฐ๋ผ LONG, DOUBLE -> metric, TIMESTAMP -> timestamp ๋๋ dimension, ๋๋จธ์ง dimension ๊ท์น์ผ๋ก ์ค์ ์ ํ๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.
๊ฐ ์ปฌ๋ผ์ ํ์ ์ ์ป๋ ๋ฐฉ๋ฒ์ ๋ค์ ์คํฌ๋ฆฐ์ท์ ์ฐธ๊ณ ํ์๋ฉด ๋ ๊ฒ ๊ฐ์ต๋๋ค.

๋, ์์ ํ๋ฉด์ ๊ทธ๋ฆฌ๋๋ฐ์ ์ปฌ๋ผ ๋ด์ฉ์ด ํ์ํ ๊ฒ ๊ฐ์๋ฐ์. ์ด๊ฒ์ ์ป๋ ๊ฒ์ @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
ํ
์คํธํ ๊ฒฐ๊ณผ ์ ์์ ์ผ๋ก ์๋ฃ๋ฉ๋๋ค.
ํ๊ฐ์ง ๋ ๋ฌธ์๋๋ฆด๊ฒ ์์ต๋๋ค.
2.์์์ ๋ง์ํ์ ๊ฒ์ฒ๋ผ removeFirstRow์ ๋ํด์๋ csv๋ง ํด๋น๋๋๊ฑด๊ฐ์?
@brandon-wonjune
@joohokim1
ํ๋ฉํ๋ฉด์์ ๋ฐ์ดํฐ์์ค๋ฅผ ์์ฑํ๋ ๊ณผ์ ์์ ์ฐ๋ ค๋๋ ๋ถ๋ถ์ด ์์ด์ ์๊ฒฌ๋๋ฆฝ๋๋ค.
ํ๋ฉด์ ์ค๋
์ท ์์ธ ํ์
์
๋๋ค.
์๊ฒฌ ๋ถํ๋๋ฆฝ๋๋ค-
@minjung-cho @ksparknot
๋ง์์ฃผ์ 2๊ฐ ์๊ฒฌ ๋ชจ๋ ๋์ํฉ๋๋ค. ๊ฐ์ฌํฉ๋๋ค~
- '๋ฐ์ดํฐ์์ค ์์ฑ' ๋ฒํผ์ ํด๋ฆญํ์ ๋ ๋ฐ์ดํฐ์์ค ํ๋ฉด์ผ๋ก ์ ํํ๊ฒ ๋ฉ๋๋ค. ์ด๋ ์์ฑ ์ทจ์๋ฅผ ํ๋ฉด ๋ฐ์ดํฐ์์ค ๋ชฉ๋ก์ผ๋ก ๋๋ฉํ๋ ํ๋ก์ฐ๋ก ํ์ฌ ๊ตฌํ๋์ด ์์ต๋๋ค. ์ฌ์ฉ์๊ฐ ๊ธธ์ ์๋ ์ผ์ด์ค๊ฐ ๋ฐ์ํ๋ฏ๋ก, ์ต์ํ ๋ฐ์ดํฐ์์ค ํ๋ฉด์ผ๋ก ์ ํํ๊ธฐ ์ ์ '๋ฐ์ดํฐ์์ค ํ๋ฉด์ผ๋ก ์ด๋ํ์๊ฒ ์ต๋๊น?'๋ผ๋ ๋ฉ์์ง๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด ์ด๋จ์ง์-
@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 ๊ทธ๋ ๋ค๋ฉด, ๊ตฌ์กฐ ์์ ์ ํด์ผํ ๊ฒ ๊ฐ์๋ฐ์. ๊ฒํ ๋ถํ๋๋ฆฝ๋๋ค.