select시 컬럼명 입력 방법

52 views
Skip to first unread message

Anthony Lee

unread,
May 22, 2016, 9:38:12 PM5/22/16
to Apache Tajo 한국 사용자 그룹
안녕하세요.

저희는 로그를 S3로 적재하고 이를 타조를 통하여 조회하고 있습니다.
데이터는 gz으로 압축되어 있고, json 포멧으로 되어 있습니다.

예를들면, 아래와 같은 형식입니다.
{
"AddInfo": {
"LifecycleId": "TEST"
},
"MarketId": 1,
"UserId": xxx,
"LogTime": "2016-05-22 23:59:21",
"LogType": "LoginUser",
"Game": "TEST"
}

이를 조회하기 위해 저희는
아래와 같이 테이블을 생성하고 조회를 합니다.

CREATE EXTERNAL TABLE IF NOT EXISTS AA (
  "LogTime" timestamp,
  "LogType" text,
  "UserId" text,
  "Game" text,
  "MarketId" text,
  "AddInfo" RECORD(
 "LifecycleId" text
  )
)USING json PARTITION BY COLUMN (regdate int) LOCATION 's3://xxxx~';

여기서 저희는 두가지 불편함이 있는데,
첫번째는 Record타입이 들어가는경우 *을 사용할 수 없게 되는점 입니다.

두번째는 컬럼을 명시할때 대소문자를 구분해야 해서,
select "LogTime", "LogType" ~~~ from AA ~;
이와같이 쌍따옴표를 넣어야 하는 문제가 있습니다.
문제라기 보단 불편함이 맞겠습니다.

혹시 이 불편함을 조금이나마 해소하기위한 팁이 있을까요?

Jihoon Son

unread,
May 24, 2016, 9:56:35 PM5/24/16
to Apache Tajo 한국 사용자 그룹
안녕하세요,

혹시 첫번째 질문에 대해서 보충 설명을 해주실 수 있으신가요?
Record 타입의 경우도 다음 처럼 사용할 수 있는데, 제가 질문을 잘못 이해한 것 같아 좀 더 설명 부탁드립니다.

default> create external table aa (*) using json location 'hdfs://localhost:7020/test';
OK
default> select "AddInfo"."LifecycleId" from aa;
AddInfo/LifecycleId
-------------------------------
TEST
(1 rows, 0.04 sec, 0 B selected)

두번째는 대소문자를 구별하기 위해서는 현재 쌍따옴표를 넣어주는 방법 외에는 제공하는 방법이 없습니다.
불편하시더라도 저렇게 사용하시거나, 아니면 로그 안의 필드 이름을 바꿔주셔야할 것 같습니다.

감사합니다.
손지훈 드림

2016년 5월 23일 월요일 오전 10시 38분 12초 UTC+9, Anthony Lee 님의 말:

Anthony Lee

unread,
May 25, 2016, 9:51:46 PM5/25/16
to Apache Tajo 한국 사용자 그룹
아 첫번째에 대해 제가 말씀드리고자 했던것은 

CREATE EXTERNAL TABLE IF NOT EXISTS AA (
  "LogTime" timestamp,
  "LogType" text,
  "UserId" text,
  "Game" text,
  "MarketId" text,
  "AddInfo" RECORD(
  "LifecycleId" text
  )
)USING json PARTITION BY COLUMN (regdate int) LOCATION 's3://xxxx~';


이런식으로 테이블에 Record 타입이 있는경우

select * from AA; 를 사용할 수 없는것이죠.
또는 select "LogTime", "AddInfo".* from AA; 이런 부분도 가능하면 좋은데 역시 안됩니다.

감사합니다.

Jihoon Son

unread,
May 26, 2016, 12:14:42 AM5/26/16
to Anthony Lee, Apache Tajo 한국 사용자 그룹
아, 그 부분은 지금 최현식 박사님께서 작업하고 계십니다.
JSON 포멧 부터 작업하고 있어서, 아마 몇 주 내로 작업이 완료되지 않을까 생각하고 있습니다. 이 패치는 0.12 버전에만 적용될 예정입니다.
작업이 끝나면 말씀하신 것 처럼 record type을 포함하는 schema에 대해서도 select * 가 가능하고,
한 record type을 select 하려면 select "AddInfo" from AA 와 같이 실행하시면 됩니다.

손지훈 드림

2016년 5월 26일 (목) 오전 10:51, Anthony Lee <zeno...@gmail.com>님이 작성:
Reply all
Reply to author
Forward
0 new messages