Hadoop Eco와 연동하기
Data Catalog 서비스에서 Hadoop Eco를 연동하는 방법을 설명합니다.
안내
Hadoop Eco 서비스의 자세한 클러스터 생성 방법은 클러스터 생성 문서를 참고하시기 바랍니다.
Step 1. Hadoop Eco에서 Data Catalog 연동하기
Hadoop Eco 서비스에서 클러스터를 생성할 때 Object Storage와 연동한 후, Data Catalog를 연동하는 방법은 다음과 같습니다.
-
Object Storage와 연동하기 위해 Hadoop 클러스터 만들기 > 3단계: 상세 설정 (선택) 에서 core-site.xml 정보를 추가합니다.
- S3 연동을 위한 Credential 발급은 크리덴셜 발급 문서를 참고하시기 바랍니다.
Object Storage 연결 정보{
"configurations":
[
{
"classification": "core-site",
"properties":
{
"fs.swifta.service.kic.credential.id": "credential_id",
"fs.swifta.service.kic.credential.secret": "credential_secret"
"fs.s3a.access.key": "access_key",
"fs.s3a.secret.key": "secret_key",
"fs.s3a.buckets.create.region": "kr-central-2",
"fs.s3a.endpoint.region": "kr-central-2",
"fs.s3a.endpoint": "objectstorage.kr-central-2.kakaocloud.com",
"s3service.s3-endpoint": "objectstorage.kr-central-2.kakaocloud.com",
}
}
]
} -
Data Catalog와 연동하기 위해 **클러스터 만들기 > 5단계: 서비스 연동 설정 (선택)**에서 Data Catalog 연동을 설정합니다.
- 서비스 연동 항목에서 Data Catalog 연동을 선택합니다.
- Data Catalog 연동 항목에서 하둡 네트워크/서브넷 정보를 확인 후, 원하는 카탈로그를 선택합니다.
Step 2. 컴포넌트 사용하기
Data Catalog 서비스에서 Hadoop Eco와 연동 후, 컴포넌트 사용하는 방법을 설명합니다.
안내
Hadoop Eco 서비스의 컴포넌트 사용에 대한 자세한 설명은 컴포넌트 사용 문서를 참고하시기 바랍니다.
Step 3. 쿼리로 테이블 생성 및 데이터 입력하기
Hadoop Eco와 Data Catalog를 연동한 후, Hive와 Spark, Trino를 사용해서 테이블 생성하여 데이터에 접근합니다.
Hive 쿼리로 테이블 생성과 데이터 입력
Hive 쿼리를 이용해서 여러 포맷의 데이터 생성 및 데이터 입력 방법을 설명합니다.
- text
- avro
- parquet
- csv
- orc
- json
text 포맷
$ hive (data_table)> CREATE EXTERNAL TABLE text_table (
> col1 string
> )
> LOCATION 'swifta://kbc-test.kc/data_table/text_table';
OK
Time taken: 5.351 seconds
$ hive (data_table)>
> INSERT INTO TABLE text_table VALUES ('a'), ('b'), ('c');
.....
Table data_table.text_table stats: [numFiles=1, totalSize=16]
OK
col1
Time taken: 31.864 second
avro 포맷
$ hive (data_table)> CREATE EXTERNAL TABLE avro_table (
> col1 string
> )
> STORED AS PARQUET
> LOCATION 'swifta://kbc-test.kc/data_table/avro_table';
OK
Time taken: 3.032 seconds
$ hive (data_table)>
> INSERT INTO TABLE avro_table VALUES ('a'), ('b'), ('c');
.....
Table data_table.avro_table stats: [numFiles=1, totalSize=266]
OK
col1
Time taken: 29.613 seconds
parquet 포맷
$ hive (data_table)> CREATE EXTERNAL TABLE parquet_table (
> col1 string
> )
> STORED AS PARQUET
> LOCATION 'swifta://kbc-test.kc/data_table/parquet_table';
OK
Time taken: 1.041 seconds
$ hive (data_table)>
> INSERT INTO TABLE parquet_table VALUES ('a'), ('b'), ('c');
.....
Table data_table.parquet_table stats: [numFiles=1, totalSize=266]
OK
col1
Time taken: 26.808 seconds
csv 포맷
$ hive (data_table)> CREATE EXTERNAL TABLE csv_table (
> col1 string
> )
> ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
> STORED AS textfile
> LOCATION 'swifta://kbc-test.kc/data_table/csv_table';
OK
Time taken: 5.459 seconds
$ hive (data_table)>
> INSERT INTO TABLE csv_table VALUES ('a'), ('b'), ('c');
.....
Table data_table.csv_table stats: [numFiles=1, totalSize=22]
OK
col1
Time taken: 27.47 seconds
orc 포맷
$ hive (data_table)> CREATE EXTERNAL TABLE orc_table (
> col1 string
> )
> STORED AS ORC
> LOCATION 'swifta://kbc-test.kc/data_table/orc_table';
OK
Time taken: 1.423 seconds
$ hive (data_table)>
> INSERT INTO TABLE orc_table VALUES ('a'), ('b'), ('c');
.....
Table data_table.orc_table stats: [numFiles=1, totalSize=216]
OK
col1
Time taken: 22.871 seconds
json 포맷
$ hive (data_table)> CREATE EXTERNAL TABLE json_table (
> col1 string
> )
> ROW FORMAT SERDE 'org.apache.hive.hcatalog.data.JsonSerDe'
> STORED AS textfile
> LOCATION 'swifta://kbc-test.kc/data_table/json_table';
OK
Time taken: 3.917 seconds
$ hive (data_table)>
> INSERT INTO TABLE json_table VALUES ('a'), ('b'), ('c');
.....
Table data_table.json_table stats: [numFiles=1, totalSize=35]
OK
col1
Time taken: 22.638 seconds
Spark 쿼리로 데이터 확인
spark-shell을 이용해서 Hive로 만든 데이터 테이블 내용을 확인합니다.
주의
하단의 테스트한 쿼리는 모두 동작해야 하나, 버전 또는 테이블 포맷에 따라 호환성 문제가 있습니다. 현재 해결 중이며 문제 있는 버전과 포맷은 아래와 같습니다.
- spark2: orc, json
- spark3: json
- 테이블 확인
- 데이터 조회
테이블 확인
$ spark-shell
Welcome to
____ __
/ __/__ ___ _____/ /__
_\ \/ _ \/ _ `/ __/ '_/
/___/ .__/\_,_/_/ /_/\_\ version 3.2.2
/_/
Using Scala version 2.12.15 (OpenJDK 64-Bit Server VM, Java 1.8.0_262)
Type in expressions to have them evaluated.
Type :help for more information.
scala> spark.sql("use data_table").show()
....
scala> spark.sql("show tables").show()
+----------+-------------+-----------+
| namespace| tableName|isTemporary|
+----------+-------------+-----------+
|data_table| avro_table| false|
|data_table| csv_table| false|
|data_table| json_table| false|
|data_table| orc_table| false|
|data_table|parquet_table| false|
|data_table| text_table| false|
+----------+-------------+-----------+