Azure Databricks: 3-2. DBFS에 Azure Data Lake Storage Gen2 마운트
서비스 주체 작성
Azure Databricks의 DBFS에 Azure Data Lake Storage Gen2(ADLS Gen2)를 마운트하려면 서비스 주체를 구성해야 하기 때문에 미리 만들어 둡니다.
(서비스 프린시펄은 애플리케이션에 할당하는 사용자 ID와 같습니다.)
모든 서비스의 ID 범주에서 Azure Active Directory를 엽니다.
메뉴에서 App registrations를 열고 + 새로 만들기를 클릭합니다.
이름에 원하는 이름을 입력하고 리디렉션 URI에 Azure Databricks URL( htps : // 그럼 파네아 st. 오즈레타타비 cks. 네 t/ )을 입력한 다음 등록을 클릭합니다.
등록 후에 표시되는 「어플리케이션(클라이언트) ID」와 「디렉토리(테넌트) ID」는 마운트시의 파라미터로서 필요하게 되므로, 복사해 삼가해 둡니다.
그런 다음 서비스 보안 주체의 클라이언트 비밀을 만듭니다.
메뉴에서 인증서 및 비밀을 열고 +새 클라이언트 비밀을 클릭합니다.
설명 및 만료 날짜를 설정하고 추가를 클릭합니다.
생성되면 클라이언트 비밀 문자열이 표시됩니다. 이 문자열은 작성 후 처음 한 번만 표시되므로 복사하여 삼가하십시오.
클라이언트 시크릿도 마운트시에 필요한 파라미터가 됩니다.
(비밀 정보를 관리하기 위해 Azure Key Vault를 사용하는 경우 클라이언트 비밀을 키 컨테이너에 등록 둡니다.)
Azure Data Lake Storage Gen2(ADLS Gen2) 및 파일 시스템 만들기
ADLS Gen2는 Azure Storage의 옵션 처리이므로 생성은 스토리지 계정 만들기의 절차를 따릅니다.
작성 변경 사항은 작성의 고급 설정에서 계층 구조 네임스페이스를 사용 가능하게 하는 것입니다.
(ADLS Gen2는 나중에 활성화 할 수 없으므로 사용하는 경우 새롭고 스토리지 계정 생성이 필요합니다.)
작성이 완료되면 작성한 자원을 여십시오.
'계층 구조 네임스페이스'를 활성화하면 개요의 '서비스'가 'Blob'에서 'Data Lake Gen2 파일 시스템'으로 변경됩니다.
파일 시스템 만들기
ADLS Gen2에 파일 시스템을 만듭니다.
Data Lake Gen2 파일 시스템을 클릭하여 ADLS Gen2 메뉴를 엽니다.
+ 파일 시스템을 클릭하고 이름에 임의의 이름을 입력하여 작성합니다.
ADLS Gen2에 대한 액세스 권한 부여
서비스 주체에 대한 ADLS Gen2 액세스 권한을 부여합니다.
만든 파일 시스템을 엽니다.
메뉴에서 액세스 제어(IAM)를 열고 역할 할당 추가를 클릭합니다.
역할을 스토리지 BLOB 데이터 공동 작성자로 변경하고 선택에서 작성한 서비스 주체를 선택하고 저장을 클릭하십시오.
역할 할당 탭을 클릭하면 서비스 보안 주체에 할당된 권한을 볼 수 있습니다.
ADLS Gen2를 DBFS에 마운트
DBFS에 ADLS Gen2를 마운트하려면 다음 스크립트를 사용합니다.
(스토리지, 서비스 프린시펄 정보, 마운트 대상 DBFS 디렉토리는 작성한 자원에 맞게 변경하십시오.)
Cmd 1# ストレージ情報
storage_alds = {
"account": "{ストレージアカウント名}",
"file_system": "{ファイルシステム名}"
}
# サービスプリンシパル情報
service_principal = {
"client_id": "{アプリケーション(クライアント)ID}",
"directory_id": "{ディレクトリ(テナント)ID}",
"client_secret": "{クライアントシークレット}"
# "client_secret": dbutils.secrets.get(scope="{スコープ名}", key="{キー名}") # Key Vault使用時
}
# マウントするDBFSディレクトリ
mount_point_adls = "/mnt/{マウント先ディレクトリ}"
try:
# マウント状態のチェック
mount_dir = mount_point_adls
if mount_dir[-1] == "/":
mount_dir = mount_dir[:-1]
if len(list(filter(lambda x: x.mountPoint == mount_dir, dbutils.fs.mounts()))) > 0:
print("Already mounted.")
mounted = True
else:
mounted = False
if not mounted:
# Azure Data Lake Storage Gen2のマウント
configs = {
"fs.azure.account.auth.type": "OAuth",
"fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id": service_principal["client_id"],
"fs.azure.account.oauth2.client.secret": service_principal["client_secret"],
"fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/{directory_id}/oauth2/token".format(**service_principal)
}
mounted = dbutils.fs.mount(
source="abfss://{file_system}@{account}.dfs.core.windows.net/".format(**storage_alds),
mount_point=mount_point_adls,
extra_configs=configs
)
except Exception as e:
raise e
"mounted: {}".format(mounted)
참고
ADLS Gen2는 Azure Storage의 옵션 처리이므로 생성은 스토리지 계정 만들기의 절차를 따릅니다.
작성 변경 사항은 작성의 고급 설정에서 계층 구조 네임스페이스를 사용 가능하게 하는 것입니다.
(ADLS Gen2는 나중에 활성화 할 수 없으므로 사용하는 경우 새롭고 스토리지 계정 생성이 필요합니다.)
작성이 완료되면 작성한 자원을 여십시오.
'계층 구조 네임스페이스'를 활성화하면 개요의 '서비스'가 'Blob'에서 'Data Lake Gen2 파일 시스템'으로 변경됩니다.
파일 시스템 만들기
ADLS Gen2에 파일 시스템을 만듭니다.
Data Lake Gen2 파일 시스템을 클릭하여 ADLS Gen2 메뉴를 엽니다.
+ 파일 시스템을 클릭하고 이름에 임의의 이름을 입력하여 작성합니다.
ADLS Gen2에 대한 액세스 권한 부여
서비스 주체에 대한 ADLS Gen2 액세스 권한을 부여합니다.
만든 파일 시스템을 엽니다.
메뉴에서 액세스 제어(IAM)를 열고 역할 할당 추가를 클릭합니다.
역할을 스토리지 BLOB 데이터 공동 작성자로 변경하고 선택에서 작성한 서비스 주체를 선택하고 저장을 클릭하십시오.
역할 할당 탭을 클릭하면 서비스 보안 주체에 할당된 권한을 볼 수 있습니다.
ADLS Gen2를 DBFS에 마운트
DBFS에 ADLS Gen2를 마운트하려면 다음 스크립트를 사용합니다.
(스토리지, 서비스 프린시펄 정보, 마운트 대상 DBFS 디렉토리는 작성한 자원에 맞게 변경하십시오.)
Cmd 1# ストレージ情報
storage_alds = {
"account": "{ストレージアカウント名}",
"file_system": "{ファイルシステム名}"
}
# サービスプリンシパル情報
service_principal = {
"client_id": "{アプリケーション(クライアント)ID}",
"directory_id": "{ディレクトリ(テナント)ID}",
"client_secret": "{クライアントシークレット}"
# "client_secret": dbutils.secrets.get(scope="{スコープ名}", key="{キー名}") # Key Vault使用時
}
# マウントするDBFSディレクトリ
mount_point_adls = "/mnt/{マウント先ディレクトリ}"
try:
# マウント状態のチェック
mount_dir = mount_point_adls
if mount_dir[-1] == "/":
mount_dir = mount_dir[:-1]
if len(list(filter(lambda x: x.mountPoint == mount_dir, dbutils.fs.mounts()))) > 0:
print("Already mounted.")
mounted = True
else:
mounted = False
if not mounted:
# Azure Data Lake Storage Gen2のマウント
configs = {
"fs.azure.account.auth.type": "OAuth",
"fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id": service_principal["client_id"],
"fs.azure.account.oauth2.client.secret": service_principal["client_secret"],
"fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/{directory_id}/oauth2/token".format(**service_principal)
}
mounted = dbutils.fs.mount(
source="abfss://{file_system}@{account}.dfs.core.windows.net/".format(**storage_alds),
mount_point=mount_point_adls,
extra_configs=configs
)
except Exception as e:
raise e
"mounted: {}".format(mounted)
참고
서비스 주체에 대한 ADLS Gen2 액세스 권한을 부여합니다.
만든 파일 시스템을 엽니다.
메뉴에서 액세스 제어(IAM)를 열고 역할 할당 추가를 클릭합니다.
역할을 스토리지 BLOB 데이터 공동 작성자로 변경하고 선택에서 작성한 서비스 주체를 선택하고 저장을 클릭하십시오.
역할 할당 탭을 클릭하면 서비스 보안 주체에 할당된 권한을 볼 수 있습니다.
ADLS Gen2를 DBFS에 마운트
DBFS에 ADLS Gen2를 마운트하려면 다음 스크립트를 사용합니다.
(스토리지, 서비스 프린시펄 정보, 마운트 대상 DBFS 디렉토리는 작성한 자원에 맞게 변경하십시오.)
Cmd 1# ストレージ情報
storage_alds = {
"account": "{ストレージアカウント名}",
"file_system": "{ファイルシステム名}"
}
# サービスプリンシパル情報
service_principal = {
"client_id": "{アプリケーション(クライアント)ID}",
"directory_id": "{ディレクトリ(テナント)ID}",
"client_secret": "{クライアントシークレット}"
# "client_secret": dbutils.secrets.get(scope="{スコープ名}", key="{キー名}") # Key Vault使用時
}
# マウントするDBFSディレクトリ
mount_point_adls = "/mnt/{マウント先ディレクトリ}"
try:
# マウント状態のチェック
mount_dir = mount_point_adls
if mount_dir[-1] == "/":
mount_dir = mount_dir[:-1]
if len(list(filter(lambda x: x.mountPoint == mount_dir, dbutils.fs.mounts()))) > 0:
print("Already mounted.")
mounted = True
else:
mounted = False
if not mounted:
# Azure Data Lake Storage Gen2のマウント
configs = {
"fs.azure.account.auth.type": "OAuth",
"fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id": service_principal["client_id"],
"fs.azure.account.oauth2.client.secret": service_principal["client_secret"],
"fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/{directory_id}/oauth2/token".format(**service_principal)
}
mounted = dbutils.fs.mount(
source="abfss://{file_system}@{account}.dfs.core.windows.net/".format(**storage_alds),
mount_point=mount_point_adls,
extra_configs=configs
)
except Exception as e:
raise e
"mounted: {}".format(mounted)
참고
# ストレージ情報
storage_alds = {
"account": "{ストレージアカウント名}",
"file_system": "{ファイルシステム名}"
}
# サービスプリンシパル情報
service_principal = {
"client_id": "{アプリケーション(クライアント)ID}",
"directory_id": "{ディレクトリ(テナント)ID}",
"client_secret": "{クライアントシークレット}"
# "client_secret": dbutils.secrets.get(scope="{スコープ名}", key="{キー名}") # Key Vault使用時
}
# マウントするDBFSディレクトリ
mount_point_adls = "/mnt/{マウント先ディレクトリ}"
try:
# マウント状態のチェック
mount_dir = mount_point_adls
if mount_dir[-1] == "/":
mount_dir = mount_dir[:-1]
if len(list(filter(lambda x: x.mountPoint == mount_dir, dbutils.fs.mounts()))) > 0:
print("Already mounted.")
mounted = True
else:
mounted = False
if not mounted:
# Azure Data Lake Storage Gen2のマウント
configs = {
"fs.azure.account.auth.type": "OAuth",
"fs.azure.account.oauth.provider.type": "org.apache.hadoop.fs.azurebfs.oauth2.ClientCredsTokenProvider",
"fs.azure.account.oauth2.client.id": service_principal["client_id"],
"fs.azure.account.oauth2.client.secret": service_principal["client_secret"],
"fs.azure.account.oauth2.client.endpoint": "https://login.microsoftonline.com/{directory_id}/oauth2/token".format(**service_principal)
}
mounted = dbutils.fs.mount(
source="abfss://{file_system}@{account}.dfs.core.windows.net/".format(**storage_alds),
mount_point=mount_point_adls,
extra_configs=configs
)
except Exception as e:
raise e
"mounted: {}".format(mounted)
Reference
이 문제에 관하여(Azure Databricks: 3-2. DBFS에 Azure Data Lake Storage Gen2 마운트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/KcMichael/items/98493d2e9bb3eb3f12db텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)