[ Catalog를 통해 연동 ]
1. Access Key CSV 파일 업로드
Catalog 메뉴에서 'Create Table'을 클릭한다.
Files 영역에 AWS Access Key 정보가 들어있는 CSV파일을 업로드 한다.
CSV 파일 예제는 아래와 같다.
# CSV 파일 예제
Access key ID,Secret access key
DOCDNSSOD1223DK,A9DFSDF9899/DFSDSF91/
2. 업로드된 CSV 파일 확인
%fs ls dbfs:/FileStore/tables/accessKeys.csv
aws_key_df = spark.read.csv("dbfs:/FileStore/tables/accessKeys.csv" , header=True , inferSchema= True)
aws_key_df.display()
3. S3 데이터를 데이터브릭스에 연동
import urllib
# 키값 저장
access_key_id = aws_key_df.select('Access key ID').take(1)[0]["Access key ID"]
secret_access_key = aws_key_df.select('Secret access key').take(1)[0]["Secret access key"]
encoded_secret_key = urllib.parse.quote(string = secret_access_key , safe = "")
# 경로 저장
aws_s3_bucket = "maesak-s3"
mount_name = "/mnt/mount_s3"
# databricks에 s3 연동
source_url = "s3a://%s:%s@%s" % (access_key_id ,encoded_secret_key , aws_s3_bucket )
dbutils.fs.mount(source_url, mount_name)
데이터 경로 조회
%fs ls 'mnt/mount_s3'
데이터 확인
s3_df= spark.read.csv("dbfs:/mnt/mount_s3/Emission_Factor 1.csv" , header= True , inferSchema= True)
display(s3_df)
# s3_df.show()
[ Code를 통해 연동 ]
%python
ACCESS_KEY = "AOVKDCODSOWDKSOWDK"
# Encode the Secret Key to remove any "/" characters
SECRET_KEY = "kDosdkc+dksDKos+sdDOHSodHSO/DHSO".replace("/", "%2F")
AWS_BUCKET_NAME = "my-bucket-name"
MOUNT_NAME = "/mnt/dev"
try:
dbutils.fs.mount("s3a://{}:{}@{}".format(ACCESS_KEY, SECRET_KEY, AWS_BUCKET_NAME), MOUNT_NAME)
except:
print("""{} already mounted. Unmount using `dbutils.fs.unmount("{}")` to unmount first""".format(MOUNT_NAME, MOUNT_NAME))
권한이 있다면 동일하게 연동 된것을 볼 수 있다.
%fs ls /mnt/dev
연동된 모든 저장소 확인
%fs mounts
연동 해제
%python
dbutils.fs.unmount("/mnt/dev")
'DataPipeline > Spark' 카테고리의 다른 글
Spark - 적응형 쿼리 (Adaptive Query Execution) (0) | 2024.11.10 |
---|---|
Spark - 병렬 JDBC Table 읽기 (0) | 2024.11.07 |
Spark - 파티션 변경에 따른 셔플작업 변화 (0) | 2024.10.30 |
Spark - 테이블 캐싱(Caching) 예제 (0) | 2024.10.27 |
Spark - Databricks를 통한 디버그 환경설정 (0) | 2024.10.26 |