728x90
๋ฐ์ํ
๐ก Impala๋ ์ฃผ๋ก ๋ถ์ ์ฟผ๋ฆฌ๋ฅผ ์ํด ์ค๊ณ๋์ด ๋๋์ ๋ฐ์ดํฐ์ ๋ํด ์ฟผ๋ฆฌ ์คํ๊ณผ ๊ฒฐ๊ณผ ๋ฐํ์ด ๋น ๋ฆ ๋๋ค. ๋ฐ๋ผ์, ๋ฐ์ดํฐ๋ฅผ ์ ๋ฐ์ดํธ, ์ญ์ ํ๋ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ์ง ์์ต๋๋ค.
๊ทธ๋ฌ๋ Kudu์ Impala๋ ๋ฐ์ ํ๊ฒ ํตํฉ๋์ด, ๋ฐ์ดํฐ๋ฅผ ์ฝ์ , ์ ๋ฐ์ดํธ, ์ญ์ ๊ฐ ๊ฐ๋ฅํ๋ค.
Kudu๋ ๋์ฉ๋ ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ ์ํด ์ค๊ณ๋ ์คํ ๋ฆฌ์ง ์์ง ๋น ๋ฅธ ์ฟผ๋ฆฌ ์ฑ๋ฅ๊ณผ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ค. ๋ํ ๋ ๋ฆฝ์ ์ธ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ก ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
Kudu ๋ ๋ฆฝ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ
๐ก ๋ ๋ฆฝ์ ์ธ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ 1.7 ๊ธฐ์ค Table Create, Select๋ง ํ์ธ ๊ฐ๋ฅํ๋ค. Java, C++ ๋ฑ๊ณผ ํจ๊ป ์ฌ์ฉํ๋ฉด CRUD ๋ชจ๋ ๊ฐ๋ฅํ๋ค. https://github.com/apache/kudu/tree/master/examples/java/java-example Kudu M
arkhyeon.tistory.com
Impala Table Create Insert
Update, Delete๋ ๋ถ๊ฐ๋ฅํ๋ค.
CREATE TABLE foo1 (
id INT primary key,
col1 STRING,
col2 STRING
);
INSERT INTO foo1 VALUES (1, "Michoba", "Alice");
Impala + Kudu Table Create Upsert Insert Delete Update
Create
CREATE TABLE emp
(
id INT,
name STRING,
dept STRING,
resign timestamp,
PRIMARY KEY (id, name)
)
STORED AS KUDU;
CREATE TABLE emp_dst
(
id INT,
name STRING,
dept STRING,
resign timestamp,
PRIMARY KEY (id, name)
)
STORED AS KUDU;
Insert
insert into emp (id, name, dept, resign) values (1, 'Phil', 'Resources', '2023-12-12');
insert into emp (id, name, dept, resign) values (2, 'John', 'Dev', '2023-10-28');
insert into emp (id, name, dept, resign) values (3, 'Corny', 'Dev', '2022-01-12');
insert into emp (id, name, dept, resign) values (4, 'Henka', 'Training', '2022-05-19');
insert into emp (id, name, dept, resign) values (5, 'Kar', 'Management', '2022-03-16');
insert into emp (id, name, dept, resign) values (6, 'Locy', 'Resources', '2023-11-17');
insert into emp (id, name, dept, resign) values (7, 'Domenico', 'Sales', '2022-11-24');
insert into emp (id, name, dept, resign) values (8, 'Marie', 'Dev', '2024-01-10');
insert into emp (id, name, dept, resign) values (9, 'Jordan', 'Training', '2022-08-21');
insert into emp (id, name, dept, resign) values (10, 'Bette', 'Dev', '2022-07-15');
insert into emp_dst (id, name, dept, resign) values (1, 'Phil', 'Dev', '2023-12-12');
insert into emp_dst (id, name, dept, resign) values (2, 'John', 'Dev', '2023-10-28');
insert into emp_dst (id, name, dept, resign) values (3, 'Corny', 'Dev', '2022-01-12');
insert into emp_dst (id, name, dept, resign) values (4, 'Henka', 'Dev', '2022-05-19');
insert into emp_dst (id, name, dept, resign) values (5, 'Kar', 'Dev', '2022-03-16');
Upsert
UPSERT INTO emp
SELECT * FROM emp_dst
WHERE id < 3;
Delete
DELETE from emp
where id < 2;
DELETE from emp_dst
where dept = 'Dev';
Update / Join
UPDATE emp
SET emp.dept = CONCAT(B.name,'โ
')
FROM emp
JOIN emp_dst as B ON qkdwngus.id = B.id;
Upsert ํด๋ ๋ฐ์ดํฐ ๋ณํ ์๋ ํ์ - Upsert Error
๐กJDBC๋ฅผ ์ด์ฉํ Upsert ์ ํ ์ด๋ธ ๋ฐ์ดํฐ์ ๋ณํ๊ฐ ์ผ์ด๋์ง ์๋ ํ์์ ํ์ธํ๊ณ 2๊ฐ์ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๋ค.
1. Connection URL์ UseNativeQuery=1 ์ถ๊ฐ
- JAVA Connection URL : "jdbc:impala://<<hostname>>:21050;UseNativeQuery=1"
- DB Tool
2. kudu-impala bash shell์ง์ ์ฟผ๋ฆฌ
//docker ์ ์ ์ด๋ฆ ์ฐพ๊ธฐ
$ docker ps
//์ ์
$ docker exec -it kudu-impala bash
> CREATE TABLE foo1 (
> id INT primary key,
> col1 STRING,
> col2 STRING
> )
> PARTITION BY HASH(id) PARTITIONS 3
> STORED AS KUDU;
> CREATE TABLE foo2 (
> id INT primary key,
> col1 STRING,
> col2 STRING
> )
> PARTITION BY HASH(id) PARTITIONS 3
> STORED AS KUDU;
> INSERT INTO foo1 VALUES (1, "Michoba", "alice");
> INSERT INTO foo2 select id, col1, NULL from foo1;
> select * from foo2;
+----+---------+------+
| id | col1 | col2 |
+----+---------+------+
| 1 | Michoba | null |
+----+---------+------+
> UPSERT INTO foo2 (id, col2) select id, col2 from foo1;
> select * from foo2;
+----+---------+-------+
| id | col1 | col2 |
+----+---------+-------+
| 1 | Michoba | alice |
+----+---------+-------+
728x90
๋ฐ์ํ
'๋น ๋ฐ์ดํฐDB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
KUDU Docker JAVA API (1) | 2024.02.05 |
---|---|
Kudu ๋ ๋ฆฝ์ ์ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ฉ (1) | 2024.02.01 |
Presto JDBC ์ฐ๊ฒฐ (1) | 2024.01.23 |
Single Store JDBC ์ฐ๊ฒฐ (0) | 2024.01.23 |
Hive Create Update Delete Select Table (0) | 2024.01.23 |