centos7, trino 435, elasticsearch 7.5.1 버전 기준입니다.

지난 포스팅에 Trino와 ElasticSearch를 연동하였습니다.

elasticsearch의 document의 값에 배열 혹은 오브젝트 타입의 데이터를 넣을 수 있는데,

trino를 통해 해당 값을 테이블 형식으로 보기 위해선 document가 포함된 index에 별도의 매핑을 지정해주어야 합니다.

해당 현상을 테스트해보겠습니다.

서버 환경 구성입니다.

 

두 프로세스 모두 hadoop 계정 권한으로 실행되었습니다.

node1: Trino Coordinator, ElasticSearch

node2: Trino Worker, ElasticSearch

node3: Trino Worker, ElasticSearch

node4: Trino Worker, ElasticSearch

 

1. 엘라스틱서치 배열과 오브젝트가 포함된 도큐먼트 생성

action server: node1

user: hadoop

pwd: -

cmd:

# 콘솔에서 도큐먼트를 생성
curl -XPUT http://localhost:9200/trino_test/_doc/1 -H 'Content-Type: application/json' -d'
{
    "array_string_field": ["trino","the","lean","machine-ohs"],
    "long_field": 314159265359,
    "id_field": "564e6982-88ee-4498-aa98-df9e3f6b6109",
    "timestamp_field": "1987-09-17T06:22:48.000Z",
    "object_field": {
        "array_int_field": [86,75,309],
        "int_field": 2
    }
}'

# 도큐먼트를 확인
curl -X GET http://localhost:9200/trino_test/_search\?pretty

 

콘솔을 통해 엘라스틱서치에서 도큐먼트 조회 시,
array_string_field필드(컬럼)은 배열형식, object_field 필드는 객체 형식으로 나타납니다.

 

 

DBeaver를 통해 Trino 접근 후, 해당 도큐먼트 조회 시, 아래와 같은 에러와 함께 데이터가 나타나지 않습니다.

 

2. Trino 상에서 도큐먼트 내 배열, 오브젝트 타입을 인식하도록 인덱스 매핑 설정

action server: node1

user: hadoop

pwd: -

cmd:

# 서버 콘솔을 통해 엘라스틱서치 내 trino_test 인덱스에 대한 매핑 설정
curl --request PUT \
    --url localhost:9200/trino_test/_mapping \
    --header 'content-type: application/json' \
    --data '
{
    "_meta": {
        "trino":{
            "array_string_field":{
                "isArray":true
            },
            "object_field":{
                "array_int_field":{
                    "isArray":true
                }
            }
        }
    }
}'

 

DBeaver에 연결된 Trino를 새로고침 후 데이터가 테이블 형식으로 정상적으로 나오는지 확인합니다.

 

감사합니다.

반응형

'BigData > Trino' 카테고리의 다른 글

Trino) Trino + ElasticSearch 연동  (0) 2024.08.16
trino) Trino, Hive 카탈로그 연동, trino-cli  (0) 2024.03.12
Trino) Trino 435 설치  (0) 2024.03.12

+ Recent posts