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 |