DynamoDB에 Athena로 SQL!
이 기사의 내용
DynamoDB 데이터는 DataPipline을 사용하여 S3으로 내보낼 수 있습니다.
이 데이터는 1행 1JSON의 구조로 되어 있기 때문에, Athena로부터 쿼리가 던질 수 있다고 생각해, 실제로 시도한 결과입니다.
소감
처음에 결론을 말해 버리면, 현재 상태에서는 사용은 한정되지 않을까 생각합니다.
CLI나 SDK로부터 리포트를 출력할 수 있게 되면, 사용할 수 있는 곳이 퍼질 것 같다・・・라고 말한 곳입니다.
전제 조건
처음에 결론을 말해 버리면, 현재 상태에서는 사용은 한정되지 않을까 생각합니다.
CLI나 SDK로부터 리포트를 출력할 수 있게 되면, 사용할 수 있는 곳이 퍼질 것 같다・・・라고 말한 곳입니다.
전제 조건
내보낼 수 있는 JSON 데이터를 조작합니다.
사전 준비(내보내기)
내보내기에 대해 쉽게 단계를 검토합니다.
1. DynamoDB 테이블을 선택하고 내보내기를 선택합니다.
표를 선택한 상태에서 내보내기를 선택합니다.
2.DataPipline 설정
대지와 쓴 rate에 관하여
이것은 DynamoDB 테이블이 확보한 RCU 중, 이번 처리에서 DataPipline이 사용하는 비율을 기재합니다.
주의로서는 가속을 밟거나 하는 것은 아마도 있습니다.
설정이 끝나면 Activate합시다. 시작합니다.
상세 설정은 가능하므로 환경에 따라 사용자 정의하십시오.
Athena 설정
S3에 데이터가 출력된 후의 이야기로 이동합니다.
실제로 Athena를 사용하여 DynamoDB 데이터에 SQL을 던져보십시오.
Athena는 현재 도쿄 리전에서는 사용할 수 없으므로 버지니아에서 사용합니다 (최상이었고)
약속 화면
Catalog Manager -> Add table
를 선택하여 위의 화면으로 전환
적당히 DB, 테이블을 지정·작성합니다
중간에있는 S3 패스가 중요합니다.
도쿄 지역의 버킷이든 상관 없기 때문에
s3://オブジェクトまでのパス/
쓰고 다음
Import 할 데이터 형식을 선택하므로 JSON 선택
열 이름과 형식을 지정합니다.
그 다음은 뭐, 디폴트로 좋기 때문에 지정하면 Athena는 테이블을 만들어 줍니다.
간단하죠?
그러나 이렇게 만들면
json{"name":{"s":"mnono-morikubo"},"type":{"s":"cool"},"comment":{"s":"murii"}}
같은 것이 바탕이 되고 있는 JSON이라고 하면, 이것으로 읽어들이면 각 컬럼이 이런 느낌이 됩니다
이름{"s":"mnono-morikubo"}
유형{"s":"cool"}
comment{"s":"murii"}
select로 나온 결과가 이것이 곤란하네요?
JSON을 지원합시다.
JSON을 지원하는 테이블 만들기
이 화면의 오른쪽에 명령을 작성합니다.
테이블 정의 CREATE EXTERNAL TABLE sampledb.test_tb (
name struct <s:string>,
type struct <s:string>,
comment struct <s:string>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://オブジェクトまでのパス/';
이런 식으로 정의함으로써 JSON에 대응시킬 수 있습니다.
이 근처의 자세한 설명은 친숙한 큰 고소, 이하의 기사를 참고로 했습니다.
Amazon Athena를 사용하여 JSON 파일을 검색해보기
쿼리
여기까지 오면 완성되지만 마지막으로 쿼리 만
쿼리SELECT
name.s as name,
type.s as type,
comment.s as comment
FROM
test_tb
limit 100;
요약
EMR로 hive 사용해 DynamoDB 조작하고 있었으므로 그러고 보면 Athena도 왠지 비슷한 느낌이었구나・・・라고 생각해 보았습니다만, 뒤편은 아마 같은 것이겠지요.
일일이 클러스터를 준비하지 않고, 쿼리 단위로의 과금이므로, 일차로 데이터를 dump 하거나 하고 있는 경우는 테이블마저 만들어 두면 캐패시티를 소비하지 않고 SQL이 걸리므로 편리한 일도 있을지도 수 있습니다.
글쎄, CLI가 나오지 않는다면 아무 말도 할 수 없지만.
업데이트에 기대합니다.
S3에 데이터가 출력된 후의 이야기로 이동합니다.
실제로 Athena를 사용하여 DynamoDB 데이터에 SQL을 던져보십시오.
Athena는 현재 도쿄 리전에서는 사용할 수 없으므로 버지니아에서 사용합니다 (최상이었고)
약속 화면
Catalog Manager -> Add table
를 선택하여 위의 화면으로 전환
적당히 DB, 테이블을 지정·작성합니다
중간에있는 S3 패스가 중요합니다.
도쿄 지역의 버킷이든 상관 없기 때문에
s3://オブジェクトまでのパス/
쓰고 다음
Import 할 데이터 형식을 선택하므로 JSON 선택
열 이름과 형식을 지정합니다.
그 다음은 뭐, 디폴트로 좋기 때문에 지정하면 Athena는 테이블을 만들어 줍니다.
간단하죠?
그러나 이렇게 만들면
json
{"name":{"s":"mnono-morikubo"},"type":{"s":"cool"},"comment":{"s":"murii"}}
같은 것이 바탕이 되고 있는 JSON이라고 하면, 이것으로 읽어들이면 각 컬럼이 이런 느낌이 됩니다
이름
{"s":"mnono-morikubo"}
유형
{"s":"cool"}
comment
{"s":"murii"}
select로 나온 결과가 이것이 곤란하네요?
JSON을 지원합시다.
JSON을 지원하는 테이블 만들기
이 화면의 오른쪽에 명령을 작성합니다.
테이블 정의 CREATE EXTERNAL TABLE sampledb.test_tb (
name struct <s:string>,
type struct <s:string>,
comment struct <s:string>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://オブジェクトまでのパス/';
이런 식으로 정의함으로써 JSON에 대응시킬 수 있습니다.
이 근처의 자세한 설명은 친숙한 큰 고소, 이하의 기사를 참고로 했습니다.
Amazon Athena를 사용하여 JSON 파일을 검색해보기
쿼리
여기까지 오면 완성되지만 마지막으로 쿼리 만
쿼리SELECT
name.s as name,
type.s as type,
comment.s as comment
FROM
test_tb
limit 100;
요약
EMR로 hive 사용해 DynamoDB 조작하고 있었으므로 그러고 보면 Athena도 왠지 비슷한 느낌이었구나・・・라고 생각해 보았습니다만, 뒤편은 아마 같은 것이겠지요.
일일이 클러스터를 준비하지 않고, 쿼리 단위로의 과금이므로, 일차로 데이터를 dump 하거나 하고 있는 경우는 테이블마저 만들어 두면 캐패시티를 소비하지 않고 SQL이 걸리므로 편리한 일도 있을지도 수 있습니다.
글쎄, CLI가 나오지 않는다면 아무 말도 할 수 없지만.
업데이트에 기대합니다.
CREATE EXTERNAL TABLE sampledb.test_tb (
name struct <s:string>,
type struct <s:string>,
comment struct <s:string>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION 's3://オブジェクトまでのパス/';
여기까지 오면 완성되지만 마지막으로 쿼리 만
쿼리
SELECT
name.s as name,
type.s as type,
comment.s as comment
FROM
test_tb
limit 100;
요약
EMR로 hive 사용해 DynamoDB 조작하고 있었으므로 그러고 보면 Athena도 왠지 비슷한 느낌이었구나・・・라고 생각해 보았습니다만, 뒤편은 아마 같은 것이겠지요.
일일이 클러스터를 준비하지 않고, 쿼리 단위로의 과금이므로, 일차로 데이터를 dump 하거나 하고 있는 경우는 테이블마저 만들어 두면 캐패시티를 소비하지 않고 SQL이 걸리므로 편리한 일도 있을지도 수 있습니다.
글쎄, CLI가 나오지 않는다면 아무 말도 할 수 없지만.
업데이트에 기대합니다.
Reference
이 문제에 관하여(DynamoDB에 Athena로 SQL!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/Yuki_BB3/items/acdb852a5e2afc68b760텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)