AWS

databricks 에서 Storage Credential 과 External Location 등록해 AWS S3를 Table로 생성하기.

whistory 2023. 2. 27. 16:29
반응형

 

 

 

 

 

Databricks 에서

S3에 파일을 가져와 Table을 생성해본다.

1. AWS 역할(role) 생성

1.1 역할 생성을 위해, managed(account) console 에서 Account ID를 확인한다.

1.2 AWS 콘솔에서 IAM으로 이동. [역할] - [역할 만들기]

 

 

  • 다른 AWS 계정에는 databricks account id 입력
  • 외부 ID에는, databricks account id 입력

이름을 지정하고 일단 저장한다.

 

생성한 역할로 들어간다.

 

[인라인 정책 생성] 으로 이동한다.

JSON 에 아래와 같이 정보를 입력한다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:GetObject",
                "s3:PutObject",
                "s3:DeleteObject",
                "s3:ListBucket",
                "s3:GetBucketLocation",
                "s3:GetLifecycleConfiguration",
                "s3:PutLifecycleConfiguration"
            ],
            "Resource": [
                "arn:aws:s3:::bucket_name"   <-- 사용할 S3 bucket ARN
            ]
        },
        {
            "Action": [
                "sts:AssumeRole"
            ],
            "Resource": [
                "arn:aws:iam::accountid:role/wstest"  <-- 해당 role ARN
            ],
            "Effect": "Allow"
        }
    ]
}

Resource 의 S3의 ARN은 아래정보를 복사한다.

 

정책명을 입력하고, 저장한다

 

 

 

2. Databricks의 Storage Credential 생성

위에서 생성한 역할의 ARN을 등록한다.

 

 

 

3. Databricks의 External location 생성

 

S3 bucket 경로와,

생성한 Storage credential을 입력(선택) 한다.

 

[Test connection] 을 통해 S3 접근을 확인한다.

 

 

 

S3

 

4. Databricks에서 Catalog, S3로 Table 생성

 

%sql
CREATE CATALOG IF NOT EXISTS `catalog_name`

 

%sql
CONVERT TO DELTA parquet.`s3://bucket_name/tb001/uuid001/`

%sql
CREATE TABLE `catalog_name`.default.test_tbl LOCATION 's3://bucket_name/tb001/uuid001'

%sql
select * from `catalog_name`.default.test_tbl

  • 삭제
%sql
DROP TABLE IF EXISTS `catalog_name`.default.test_tbl

dbutils.fs.rm('s3://bucket_name/tb001/uuid001/_delta_log', True)

 

 

 

 

 

 

 

 

 

 

반응형