Java UDF ์ œํ•œ ์‚ฌํ•ญยถ

์ด ํ•ญ๋ชฉ์—์„œ๋Š” Java๋กœ ์ž‘์„ฑ๋œ ์ฒ˜๋ฆฌ๊ธฐ์— ์ ์šฉ๋˜๋Š” ์ œํ•œ ์‚ฌํ•ญ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ด ํ•ญ๋ชฉ์˜ ๋‚ด์šฉ:

์ผ๋ฐ˜ ์ œํ•œ ์‚ฌํ•ญยถ

  • Java ๋ฉ”์„œ๋“œ๋Š” ํ‘œ์ค€ Java ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, Snowflake ๋ณด์•ˆ ์ œ์•ฝ ์กฐ๊ฑด์œผ๋กœ ์ธํ•ด ํŒŒ์ผ์— ์“ฐ๋Š” ๊ฒƒ๊ณผ ๊ฐ™์€ ์ผ๋ถ€ ๊ธฐ๋Šฅ์ด ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์šฐ์ˆ˜ํ•œ ๋ณด์•ˆ ๊ด€ํ–‰ ๋”ฐ๋ฅด๊ธฐ ์„น์…˜์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.

  • Java UDF๋Š” ๊ณต์œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. Java UDF๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์˜ค๋ธŒ์ ํŠธ๋„ ๊ณต์œ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์‚ฌ์šฉ์ž๋Š” ๋‹ค์Œ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

    • Java UDF๋ฅผ ์ง์ ‘ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

    • Java UDF๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ทฐ๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

    • Java UDF๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

    • Java UDF๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋งˆ์Šคํ‚น ๋˜๋Š” ํ–‰ ์•ก์„ธ์Šค ์ •์ฑ…์œผ๋กœ ํ…Œ์ด๋ธ”์„ ๊ณต์œ ํ•ฉ๋‹ˆ๋‹ค.

  • Java UDF์— USAGE ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ฒฝ์šฐ, ์ˆ˜์‹ ์ž๋Š” ํ•ด๋‹น UDF์—์„œ ๊ฐ€์ ธ์˜จ ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Java UDF์— ๋Œ€ํ•œ USAGE ๊ถŒํ•œ์„ ์—ญํ• ์— ๋ถ€์—ฌํ•˜๊ณ  ํ•ด๋‹น ์—ญํ• ์ด ํ•ด๋‹น Java UDF๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋ฌธ์„ ์‹คํ–‰ํ•˜๋Š” ๊ฒฝ์šฐ, ๋™์ผํ•œ ๋ฌธ์— ์žˆ๋Š” ๋ชจ๋“  Java UDF๋Š” USAGE ๊ถŒํ•œ์„ ๋ถ€์—ฌ๋ฐ›์€ Java UDF์—์„œ ๊ฐ€์ ธ์˜จ ๋ชจ๋“  ํŒŒ์ผ์˜ ๋‚ด์šฉ์„ ์ฝ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณต์ œ ๋Š” ์•„์ง ์™ธ๋ถ€ ๋˜๋Š” ๋‚ด๋ถ€ ์Šคํ…Œ์ด์ง€๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์—ญํ• ์„ ํ•˜๋„๋ก ๋ณด์กฐ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์Šน๊ฒฉํ•  ๋•Œ, ์Šคํ…Œ์ด์ง€ ์˜ค๋ธŒ์ ํŠธ๋ฅผ ๋‹ค์‹œ ๋งŒ๋“ค๊ณ  ๋‚ด๋ถ€ ์Šคํ…Œ์ด์ง€์—์„œ ๋ˆ„๋ฝ๋œ ๋ชจ๋“  ํŒŒ์ผ์„ ๋‹ค์‹œ ๊ฐ€์ ธ์™€์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ์€ ์›๋ž˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ๋™์ผํ•œ ๊ฒฝ๋กœ ๋ฐ ํŒŒ์ผ ์ด๋ฆ„์„ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Java UDF ์ถœ๋ ฅ ํ–‰์˜ ์ตœ๋Œ€ ํฌ๊ธฐ๋Š” 16MB์ž…๋‹ˆ๋‹ค.

๋ณต์ œ์— ๋Œ€ํ•œ ์ œํ•œ ์‚ฌํ•ญยถ

Java UDF๋ฅผ ํฌํ•จํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋˜๋Š” ์Šคํ‚ค๋งˆ๊ฐ€ ๋ณต์ œ๋  ๋•Œ Java UDF๋ฅผ ๋ณต์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ณต์ œํ•˜๋ ค๋ฉด Java UDF๊ฐ€ ๋‹ค์Œ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  • Java UDF๊ฐ€ ์Šคํ…Œ์ด์ง€(์˜ˆ: UDF์˜ JAR ํŒŒ์ผ์„ ํฌํ•จํ•˜๋Š” ์Šคํ…Œ์ด์ง€)๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ์Šคํ…Œ์ด์ง€๋Š” ๋ณต์ œ๋˜๋Š” ์Šคํ‚ค๋งˆ(๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค) ์™ธ๋ถ€์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ Java UDF ๋ฐ ํ•ด๋‹น ์ฐธ์กฐ ์Šคํ…Œ์ด์ง€๋ฅผ ๋ณ„๋„์˜ ์Šคํ‚ค๋งˆ(๋ฐ/๋˜๋Š” ๋ณ„๋„์˜ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)์— ๋ณด๊ด€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

    • Java UDF๊ฐ€ ์Šคํ…Œ์ด์ง€๋ฅผ ์ฐธ์กฐํ•  ๋•Œ๋งˆ๋‹ค, Java UDF์˜ ์Šคํ‚ค๋งˆ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€๋Š” ๋‹ค๋ฅธ ์ •๊ทœํ™”๋œ ์Šคํ…Œ์ด์ง€ ์ด๋ฆ„(์˜ˆ: โ€œmy_db.my_schema.my_stage()โ€)์„ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ๋ณต์ œ ์ž‘์—…์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๋ณต์ œํ•˜๋Š” ๊ฒฝ์šฐ, ์Šคํ…Œ์ด์ง€ ์ฐธ์กฐ์—๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์Šคํ‚ค๋งˆ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ณต์ œ ์ž‘์—…์ด ์Šคํ‚ค๋งˆ๋ฅผ ๋ณต์ œํ•˜๋Š” ๊ฒฝ์šฐ, ์Šคํ…Œ์ด์ง€ ์ฐธ์กฐ์—๋Š” ์Šคํ‚ค๋งˆ(๋ฐ ํ•„์š”์— ๋”ฐ๋ผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค)๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

    • ์ •๊ทœํ™”๋˜์ง€ ์•Š์€ ์Šคํ…Œ์ด์ง€ ์ด๋ฆ„(ํ˜„์žฌ ์„ธ์…˜์˜ ํ™œ์„ฑ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ์Šคํ‚ค๋งˆ๋ฅผ ์•”์‹œ์ ์œผ๋กœ ์‚ฌ์šฉ)์„ ์‚ฌ์šฉํ•˜์—ฌ ์ฐธ์กฐ ์Šคํ…Œ์ด์ง€๋ฅผ ๋งŒ๋“ค๊ณ , ์„ธ์…˜์˜ ํ˜„์žฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ฐ ์Šคํ‚ค๋งˆ์™€ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์ •๊ทœํ™”๋œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์—ฌ Java UDF๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

    • ์‚ฌ์šฉ์ž์˜ ์Šคํ…Œ์ด์ง€๋ฅผ ์ฐธ์กฐ ์Šคํ…Œ์ด์ง€๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค(์‚ฌ์šฉ์ž์˜ ์Šคํ…Œ์ด์ง€๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์Šคํ…Œ์ด์ง€ ๋˜๋Š” ์Šคํ‚ค๋งˆ์˜ ์Šคํ…Œ์ด์ง€์™€๋Š” ๋ณ„๊ฐœ์ž…๋‹ˆ๋‹ค).

์Šคํ‚ค๋งˆ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์žˆ๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ Java UDF๊ฐ€ ํ•„์ˆ˜ ์กฐ๊ฑด์„ ์ถฉ์กฑํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ, ์Šคํ‚ค๋งˆ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ๊ณ„์† ๋ณต์ œํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋น„ํ˜ธํ™˜ Java UDF๋Š” ์˜ค๋ฅ˜ ๋˜๋Š” ๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€ ์—†์ด ๋ณต์ œ๋ณธ์—์„œ ์ƒ๋žต๋ฉ๋‹ˆ๋‹ค.

๋ณต์ œ๋œ ๊ฐ Java UDF๋Š” ์›๋ณธ๊ณผ ๋™์ผํ•œ ์ •์˜๋ฅผ ๊ฐ–์Šต๋‹ˆ๋‹ค. ํ•ด๋‹น ์ •์˜์—๋Š” ์Šคํ…Œ์ด์ง€์— ๋Œ€ํ•œ ๋ชจ๋“  ์ฐธ์กฐ๊ฐ€ ํฌํ•จ๋ฉ๋‹ˆ๋‹ค. Java UDF์˜ ์Šคํ…Œ์ด์ง€ ์ฐธ์กฐ๋Š” ์ •๊ทœํ™”๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ, ๋ณต์ œ๋˜๋Š” ์Šคํ‚ค๋งˆ ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ƒ๋Œ€์ ์ด์ง€ ์•Š๊ณ  ์ ˆ๋Œ€์ ์ž…๋‹ˆ๋‹ค. ์›๋ณธ๊ณผ ๋ณต์ œ๋ณธ์ด ๋ชจ๋‘ ๋™์ผ ์Šคํ…Œ์ด์ง€์™€ ํŒŒ์ผ์„ ๊ฐ€๋ฆฌํ‚ค๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ์Šคํ…Œ์ด์ง€๋ฅผ ์‚ญ์ œํ•˜๊ฑฐ๋‚˜ ์Šคํ…Œ์ด์ง€์—์„œ ํ•„์ˆ˜ ํŒŒ์ผ์„ ์ œ๊ฑฐํ•˜๋ฉด ์›๋ณธ UDF์™€ ๋ณต์ œ๋œ UDF๊ฐ€ ๋ชจ๋‘ ๋น„ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

  • ์Šคํ…Œ์ด์ง€ ๋˜๋Š” ์Šคํ…Œ์ด์ง€์˜ ํŒŒ์ผ์„ ๋ณ€๊ฒฝํ•˜๋ฉด(์˜ˆ: JAR ํŒŒ์ผ์„ ์ตœ์‹  JAR ํŒŒ์ผ๋กœ ๊ต์ฒด) ์›๋ณธ UDF์™€ ๋ณต์ œ๋œ UDF ๋ชจ๋‘์— ์˜ํ–ฅ์„ ์ค๋‹ˆ๋‹ค.

๋ณต์ œ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ณต์ œ ๊ณ ๋ ค ์‚ฌํ•ญ ์„ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค.