Hadoop Eco와 연동 후 사용하기

페이지 이동경로

Hadoop Eco에서 Data Catalog 연동 후 사용하기

Data Catalog 서비스에서 Hadoop Eco를 연동하는 방법을 안내합니다.

안내
Hadoop Eco 서비스의 자세한 클러스터 생성 방법은 클러스터 만들기 문서를 참고하시기 바랍니다.

Hadoop Eco에서 Data Catalog 연동하기

Hadoop Eco 서비스에서 클러스터를 생성할 때 Object Storage와 연동한 후, Data Catalog를 연동하는 방법은 다음과 같습니다.

  1. Object Storage와 연동하기 위해 클러스터 만들기 > 4단계: 클러스터 상세 설정 (선택)에서 클러스터 구성 설정(선택)에 core-site.xml 정보를 추가합니다.

    • Object Storage 연동에 대한 자세한 설명은 Object Storage 연동하기 문서를 참고하시기 바랍니다.

      이미지. Hadoop Eco 생성하기 - 4단계 이미지 Hadoop Eco 생성하기 - 4단계

      코드 예제 Object Storage 연결 정보

      {
          "configurations":
          [
              {
                  "classification": "core-site",
                  "properties":
                  {
                      "fs.swifta.service.kic.credential.id": "credential_id",
                      "fs.swifta.service.kic.credential.secret": "credential_secret"
                  }
              }
          ]
      }
      
  2. Data Catalog와 연동하기 위해 클러스터 만들기 > 5단계: 서비스 연동 설정 (선택)에서 Data Catalog 연동을 설정합니다.

    • 서비스 연동 항목에서 Data Catalog 연동을 클릭합니다.
    • Data Catalog 연동 항목에서 하둡 네트워크/서브넷 정보를 확인 후, 원하는 카탈로그를 선택합니다.

    이미지. Hadoop Eco 생성하기 - 5단계 이미지 Hadoop Eco 생성하기 - 5단계

컴포넌트 사용하기

Data Catalog 서비스에서 Hadoop Eco와 연동 후, 컴포넌트 사용하는 방법을 안내합니다.

안내
Hadoop Eco 서비스의 컴포넌트 사용에 대한 자세한 설명은 컴포넌트 사용하기 문서를 참고하시기 바랍니다.

쿼리로 테이블 생성 및 데이터 입력하기

Hadoop Eco와 Data Catalog를 연동한 후, Hive와 Spark, Trino를 사용해서 테이블 생성하여 데이터에 접근합니다.

Hive 쿼리로 테이블 생성과 데이터 입력

Hive 쿼리를 이용해서 여러 포맷의 데이터 생성 및 데이터 입력 방법을 안내합니다.

  • text

    코드 예제 text 포맷

    $ hive (data_table)> CREATE EXTERNAL TABLE text_table (
               >     col1 string
               > )
               > LOCATION 'swifta://kbc-test.kic/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 seconds
    
  • avro

    코드 예제 avro 포맷

    $ hive (data_table)> CREATE EXTERNAL TABLE avro_table (
                    >     col1 string
                    > )
                    > STORED AS PARQUET
                    > LOCATION 'swifta://kbc-test.kic/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

    코드 예제 parquet 포맷

    $ hive (data_table)> CREATE EXTERNAL TABLE parquet_table (
                   >     col1 string
                   > )
                   > STORED AS PARQUET
                   > LOCATION 'swifta://kbc-test.kic/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

    코드 예제 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.kic/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

    코드 예제 orc 포맷

    $ hive (data_table)> CREATE EXTERNAL TABLE orc_table (
                    >     col1 string
                    > )
                    > STORED AS ORC
                    > LOCATION 'swifta://kbc-test.kic/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

    코드 예제 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.kic/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

    $ 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|
    +----------+-------------+-----------+
    
  • 데이터 조회

    코드 예제 데이터 조회 - spark

    $ scala> spark.sql("SELECT col1, count(*) FROM data_table.text_table group by    col1").show()
    or
    $ scala> spark.sql("SELECT col1, count(*) FROM data_table.avro_table group by    col1").show()
    or
    $ scala> spark.sql("SELECT col1, count(*) FROM data_table.parquet_table group  by   col1").show()
    or
    $ scala> spark.sql("SELECT col1, count(*) FROM data_table.csv_table group by    col1").show()
    or
    $ scala> spark.sql("SELECT col1, count(*) FROM data_table.orc_table group by    col1").show()
    or
    $ scala> spark.sql("SELECT col1, count(*) FROM data_table.json_table group by    col1").show()
          
    .....
    +----+--------+
    |col1|count(1)|
    +----+--------+
    |   c|       1|
    |   b|       1|
    |   a|       1|
    +----+--------+
    

Trino 쿼리로 데이터 확인

Trino CLI를 이용해서 Hive로 만든 데이터 테이블 내용을 확인합니다.

  • 테이블 및 기타 정보 확인

    코드 예제 테이블 확인 - trino

    $ trino --server http://$(hostname):8780
      
    trino> show catalogs;
    Catalog
    ---------
    hive
    system
    (2 rows)
          
    trino>  show schemas in hive;
        Schema
    --------------------
    ...
    default
    information_schema
    kbc_hive_test
    ....
    (8 rows)
          
    trino> show tables in hive.kbc_hive_test;
        Table
    ------------------
    datatype_avro
    datatype_csv
    datatype_json
    datatype_orc
    datatype_parquet
    datatype_text
    (6 rows)
    
  • 데이터 조회

    코드 예제 데이터 조회 - trino

    trino> SELECT col_bigint, count(*) FROM hive.kbc_hive_test.datatype_avro group    by col_bigint;
    or
    trino> SELECT col_bigint, count(*) FROM hive.kbc_hive_test.datatype_csv group  by   col_bigint;
    or
    trino> SELECT col_bigint, count(*) FROM hive.kbc_hive_test.datatype_json group    by col_bigint;
    or
    trino> SELECT col_bigint, count(*) FROM hive.kbc_hive_test.datatype_orc group  by   col_bigint;
    or
    trino> SELECT col_bigint, count(*) FROM hive.kbc_hive_test.datatype_parquet    group by col_bigint;
    or
    trino> SELECT col_bigint, count(*) FROM hive.kbc_hive_test.datatype_text group    by col_bigint;
          
    ..... 
    col_bigint | _col1
    ------------+-------
            1 |     6
    (1 row)