Cloud Hadoop과 Data Catalog 연동
    • PDF

    Cloud Hadoop과 Data Catalog 연동

    • PDF

    Article Summary

    VPC 환경에서 이용 가능합니다.

    네이버 클라우드플랫폼 Cloud Hadoop과 Data Catalog를 연동하는 방법을 소개합니다.

    사전 작업

    1. Data Catalog 이용 신청을 해주십시오.

      • Data Catalog 이용과 관련한 자세한 내용은 Data Catalog 시작 가이드를 참조해 주십시오.
    2. Cloud Hadoop 클러스터를 생성해 주십시오.

      • Cloud Hadoop 클러스터 생성 시, Hive Metastore 저장소를 Data Catalog로 설정해 주십시오.
      • Cloud Hadoop 생성과 관련한 자세한 내용은 Cloud Hadoop 시작 가이드를 참조해 주십시오.

    image.png

    • Cloud Hadoop 2.0 버전 이상에서만 연동 가능합니다.
    • 커버로스 인증 구성을 선택한 경우, Data Catalog 연동에 제한이 있습니다.

    Cloud Hadoop에서 Data Catalog 활용

    Data Catalog에서 스캔한 데이터를 Cloud Hadoop에서 활용하는 방법을 설명합니다.

    참고

    Data Catalog에서 스캔한 Cloud DB의 데이터는 Cloud Hadoop에서 활용할 수 없습니다.

    Object Storage 데이터 스캔

    1. 샘플 데이터를 다운로드해 주십시오. 압축을 해제한 후 AllstarFull.csv 파일을 Object Storage 버킷에 업로드해 주십시오.
      참고

      제공되는 샘플 데이터는 Lahman's Baseball Database 의 일부로, 데이터의 모든 저작권은 Sean Lahman에게 있습니다.

    2. 커넥션을 생성합니다.
      • 커넥션 생성과 관련한 자세한 내용은 Connection 가이드를 참조해 주십시오.
    3. 스캐너 생성 후, Object Storage 버킷에 업로드한 AllstarFull.csv 파일을 스캔합니다.
      • 스캐너 생성 및 실행과 관련한 자세한 내용은 Scanner 가이드를 참조해 주십시오.
    4. 스캐너 실행 후, 생성된 테이블을 확인합니다.
      • 스캐너에서 설정한 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|
    

    이 문서가 도움이 되었습니까?

    Changing your password will log you out immediately. Use the new password to log back in.
    First name must have atleast 2 characters. Numbers and special characters are not allowed.
    Last name must have atleast 1 characters. Numbers and special characters are not allowed.
    Enter a valid email
    Enter a valid password
    Your profile has been successfully updated.