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 ๋ชจ๋์ ์ํฅ์ ์ค๋๋ค.
๋ณต์ ์ ๋ํ ์์ธํ ๋ด์ฉ์ ๋ณต์ ๊ณ ๋ ค ์ฌํญ ์ ์ฐธ์กฐํ์ญ์์ค.