Cloud Hadoop과 Data Catalog 연동
- 인쇄
- PDF
Cloud Hadoop과 Data Catalog 연동
- 인쇄
- PDF
Article Summary
Share feedback
Thanks for sharing your feedback!
VPC 환경에서 이용 가능합니다.
네이버 클라우드플랫폼 Cloud Hadoop과 Data Catalog를 연동하는 방법을 소개합니다.
사전 작업
Data Catalog 이용 신청을 해주십시오.
- Data Catalog 이용과 관련한 자세한 내용은 Data Catalog 시작 가이드를 참조해 주십시오.
Cloud Hadoop 클러스터를 생성해 주십시오.
- Cloud Hadoop 클러스터 생성 시, Hive Metastore 저장소를 Data Catalog로 설정해 주십시오.
- Cloud Hadoop 생성과 관련한 자세한 내용은 Cloud Hadoop 시작 가이드를 참조해 주십시오.
- Cloud Hadoop 2.0 버전 이상에서만 연동 가능합니다.
- 커버로스 인증 구성을 선택한 경우, Data Catalog 연동에 제한이 있습니다.
Cloud Hadoop에서 Data Catalog 활용
Data Catalog에서 스캔한 데이터를 Cloud Hadoop에서 활용하는 방법을 설명합니다.
참고
Data Catalog에서 스캔한 Cloud DB의 데이터는 Cloud Hadoop에서 활용할 수 없습니다.
Object Storage 데이터 스캔
- 샘플 데이터를 다운로드해 주십시오. 압축을 해제한 후
AllstarFull.csv
파일을 Object Storage 버킷에 업로드해 주십시오.참고제공되는 샘플 데이터는 Lahman's Baseball Database 의 일부로, 데이터의 모든 저작권은 Sean Lahman에게 있습니다.
- 커넥션을 생성합니다.
- 커넥션 생성과 관련한 자세한 내용은 Connection 가이드를 참조해 주십시오.
- 스캐너 생성 후, Object Storage 버킷에 업로드한
AllstarFull.csv
파일을 스캔합니다.- 스캐너 생성 및 실행과 관련한 자세한 내용은 Scanner 가이드를 참조해 주십시오.
- 스캐너 실행 후, 생성된 테이블을 확인합니다.
- 스캐너에서 설정한
Prefix
값 +allstarfull_csv
이름의 테이블이 생성되었는지 확인합니다.
- 스캐너에서 설정한
스캔한 데이터를 Hive에서 활용
데이터 조회
hive> select * from hadoop_allstarfull_csv limit 5;
결과는 다음과 같습니다.
aaronha01 1955 0 NLS195507120 ML1 NL 1 NULL
aaronha01 1956 0 ALS195607100 ML1 NL 1 NULL
aaronha01 1957 0 NLS195707090 ML1 NL 1 9
aaronha01 1958 0 ALS195807080 ML1 NL 1 9
aaronha01 1959 1 NLS195907070 ML1 NL 1 9
- 테이블의 컬럼 타입이
datetime
일 경우, Hive에서 지원하지 않는 컬럼 타입이기 때문에 정상적으로 데이터를 조회할 수 없습니다. 컬럼 타입을 변경하여 조회해 주십시오. - 데이터의 포맷이
json
일 경우,ndjson
형태의 포맷이 아닐 경우 데이터를 정상 조회할 수 없습니다.ndjson
형태의 포맷으로 파일 내용을 변경 후 조회해 주십시오.
참고
ndjson
포맷에 대한 자세한 내용은 ndjson을 참조해 주십시오.
스캔한 데이터를 Spark에서 활용
데이터 조회
var allstar = spark.table("default.hadoop_allstarfull_csv")
var header = allstar.first()
allstar = allstar.filter(row => row != header)
allstar.show()
- Spark에서 Hive Metastore에 저장된 테이블을 읽을 경우, Header 값들을 포함하여 읽기 때문에
filter
를 통해 Header 값들을 제외할 수 있습니다.
결과는 다음과 같습니다.
+---------+------+-------+------------+------+----+---+-----------+
| playerid|yearid|gamenum| gameid|teamid|lgid| gp|startingpos|
+---------+------+-------+------------+------+----+---+-----------+
|aaronha01| 1955| 0|NLS195507120| ML1| NL| 1| null|
|aaronha01| 1956| 0|ALS195607100| ML1| NL| 1| null|
|aaronha01| 1957| 0|NLS195707090| ML1| NL| 1| 9|
|aaronha01| 1958| 0|ALS195807080| ML1| NL| 1| 9|
|aaronha01| 1959| 1|NLS195907070| ML1| NL| 1| 9|
|aaronha01| 1959| 2|NLS195908030| ML1| NL| 1| 9|
데이터 수정
var transformed_allstar = allstar.select($"playerid", $"yearid").withColumn("tenyearslater", $"yearid" + 10)
transformed_allstar.show()
transformed_allstar.write
.format("hive")
.mode("overwrite")
.option("path", "s3a://{bucketName}/transformed_allstar_csv/")
.option("header", "true")
.saveAsTable("transformed_allstar_csv")
yearid
컬럼값에 임의로 10을 더하여tenyearslater
이라는 새로운 컬럼을 만든 후, Hive Metastore에 테이블을 저장하는 예제입니다.
결과는 다음과 같습니다.
+---------+------+-------------+
| playerid|yearid|tenyearslater|
+---------+------+-------------+
|aaronha01| 1955| 1965|
|aaronha01| 1956| 1966|
|aaronha01| 1957| 1967|
|aaronha01| 1958| 1968|
|aaronha01| 1959| 1969|
이 문서가 도움이 되었습니까?