開始
加載和管理數據
處理數據
政府
引用和資源
2023年4月18日更新
給我們反饋
你可以通過使用自動化統一目錄設置磚起程拓殖的提供者。本文展示了一種方法來部署一個端到端的目錄統一實現。如果你已經有一些統一目錄基礎設施組件,您還可以使用本文部署額外的統一目錄所需的基礎設施組件。
有關更多信息,請參見首要的資源部署和支持統一目錄在磚起程拓殖供應商文檔。
自動化統一目錄設置使用起程拓殖,你必須有以下:
必須在你的磚賬戶保費計劃或以上。
在AWS,必須有能力創建Amazon S3 bucket, AWS我角色,AWS我政策,cross-account信任關係。
你必須至少有一個磚工作區要使用統一的目錄。看到創建一個工作區使用帳戶控製台。
使用磚起程拓殖提供者配置metastore統一目錄,metastore存儲,任何外部存儲器,和所有相關的訪問憑證,你必須有以下:
一個AWS帳戶。
AWS帳戶上的磚。
一個帳戶級別管理用戶在你的磚帳戶。
起程拓殖CLI。看到下載起程拓殖在起程拓殖網站上。
以下七個磚環境變量:
DATABRICKS_USERNAME將你的磚戶頭級別的管理員用戶名的價值。
DATABRICKS_USERNAME
DATABRICKS_PASSWORD的值,設置為磚戶頭級別的管理員用戶的密碼。
DATABRICKS_PASSWORD
DATABRICKS_ACCOUNT_ID將你的磚帳戶ID的值。你可以找到你的這個值在角落裏磚帳戶的控製台。
DATABRICKS_ACCOUNT_ID
TF_VAR_databricks_account_id,也將你的磚帳戶ID的值。
TF_VAR_databricks_account_id
AWS_ACCESS_KEY_ID,的值設置為你的AWS用戶的訪問密鑰ID。明白了編程訪問在AWS一般參考。
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY的值,設置為您的AWS用戶的秘密訪問密鑰。看到編程訪問在AWS一般參考。
AWS_SECRET_ACCESS_KEY
AWS_REGION,將為你的磚賬戶AWS地區代碼。看到區域端點在AWS一般參考。
AWS_REGION
請注意
作為一個安全最佳實踐,驗證自動化工具時,係統中,腳本和應用程序,磚屬於建議您使用訪問令牌服務主體而不是用戶工作區。為服務主體,創建訪問令牌管理服務主體的訪問令牌。
設置這些環境變量,看你的操作係統的文檔。
使用磚起程拓殖提供者配置所有其他統一目錄基礎設施組件,你必須有以下:
一個磚的工作區。
本地開發機器上,您必須:
下列之一:
磚的命令行接口(磚CLI)、配置你的磚工作區實例URL例如,https://dbc - 1234567890123456. cloud.m.eheci.com,你的磚個人訪問令牌,通過運行磚配置——令牌。看到設置CLI和設置身份驗證。
https://dbc - 1234567890123456. cloud.m.eheci.com
磚配置——令牌
以下兩個磚環境變量:
DATABRICKS_HOST的值,設置為你的磚工作區實例URL例如,https://dbc - 1234567890123456. cloud.m.eheci.com
DATABRICKS_HOST
DATABRICKS_TOKEN的值,設置為你的磚個人訪問令牌。另請參閱管理個人訪問令牌。
DATABRICKS_TOKEN
本節展示了如何配置起程拓殖驗證端到端統一部署目錄基礎設施。另請參閱提供初始化。
起程拓殖身份驗證配置部署的端到端聯合目錄的基礎設施,創建一個文件命名auth.tf。
auth.tf
你的代碼運行取決於您的身份驗證方法。
使用一個磚CLI連接配置文件工作區認證,使用以下代碼:
變量“databricks_connection_profile”{}起程拓殖{required_providers{磚={源=“磚/磚”}aws={源=“hashicorp / aws”}}}提供者“aws”{}#使用磚CLI的身份驗證。提供者“磚”{配置文件=var。databricks_connection_profile}#生成一個隨機字符串的前綴AWS資源,確保唯一性。資源“random_string”“命名”{特殊的=假上=假長度=6}當地人{前綴=“演示{random_string.naming.result}”標簽={}}
使用環境變量空間驗證相反,使用以下代碼:
起程拓殖{required_providers{磚={源=“磚/磚”}aws={源=“hashicorp / aws”}}}提供者“aws”{}#使用環境變量進行身份驗證。提供者“磚”{}#生成一個隨機字符串的前綴AWS資源,確保唯一性。資源“random_string”“命名”{特殊的=假上=假長度=6}當地人{前綴=“演示{random_string.naming.result}”標簽={}}
使用一個磚CLI連接配置文件工作區認證,同時創建一個文件命名auth.auto.tfvars使用以下配置代碼,並根據需要更換磚CLI連接配置文件的名稱。這使您能夠重用auth.tf在其他項目中不改變這個值auth.tf文件本身。
auth.auto.tfvars
databricks_connection_profile=“默認”
本節展示如何配置metastore根存儲的部署。這個存儲包含一個Amazon S3 bucket,還有一個我的角色,使統一目錄權限訪問和管理數據在桶裏。另請參閱aws_s3_bucket,aws_s3_bucket_public_access_block,aws_iam_policy_document,aws_iam_policy,aws_iam_role。
配置metastore存儲部署,創建一個文件命名metastore-storage.tf使用以下配置代碼:
metastore-storage.tf
變量“metastore_storage_label”{}變量“databricks_account_id”{}資源“aws_s3_bucket”“metastore”{桶=" ${local.prefix}- ${var.metastore_storage_label}”acl=“私人”版本控製{啟用=假}force_destroy=真正的標簽=合並(當地的。標簽,{的名字=" ${local.prefix}- ${var.metastore_storage_label}”})}資源“aws_s3_bucket_public_access_block”“metastore”{桶=aws_s3_bucket。metastore。idblock_public_acls=真正的block_public_policy=真正的ignore_public_acls=真正的restrict_public_buckets=真正的depends_on=(aws_s3_bucket。metastore]}數據“aws_iam_policy_document”“passrole_for_unity_catalog”{聲明{效果=“允許”行動=(“sts: AssumeRole”]校長{標識符=(“攻擊:aws:我::414351767826:角色/ unity-catalog-prod-UCMasterRole-14S5ZJVKOTYTL”]類型=“AWS”}條件{測試=“StringEquals”變量=“sts: ExternalId”值=(var。databricks_account_id]}}}資源“aws_iam_policy”“unity_metastore”{政策=jsonencode({版本=“2012-10-17”Id=" ${local.prefix}-databricks-unity-metastore”聲明=({“行動”:(“s3: GetObject”,“s3: GetObjectVersion”,“s3: propertynames”,“s3: PutObjectAcl”,“s3: DeleteObject”,“s3: ListBucket”,“s3: GetBucketLocation”),“資源”:(aws_s3_bucket。metastore。在攻擊," ${aws_s3_bucket.metastore.arn}/ *”),“效應”:“允許”}]})標簽=合並(當地的。標簽,{的名字=" ${local.prefix}-unity-catalog我政策”})}/ /要求,在情況下https:/ /文檔。磚。com/數據/磚- - - - - -數據集。html是需要。資源“aws_iam_policy”“sample_data”{政策=jsonencode({版本=“2012-10-17”Id=" ${local.prefix}-databricks-sample-data”聲明=({“行動”:(“s3: GetObject”,“s3: GetObjectVersion”,“s3: ListBucket”,“s3: GetBucketLocation”),“資源”:(“攻擊:aws: s3::: databricks-datasets-oregon / *”,“攻擊:aws: s3::: databricks-datasets-oregon”),“效應”:“允許”}]})標簽=合並(當地的。標簽,{的名字=" ${local.prefix}-unity-catalog我政策”})}資源“aws_iam_role”“metastore_data_access”{的名字=" ${local.prefix}-uc-access”assume_role_policy=數據。aws_iam_policy_document。passrole_for_unity_catalog。jsonmanaged_policy_arns=(aws_iam_policy。unity_metastore。在攻擊,aws_iam_policy。sample_data。在攻擊]標簽=合並(當地的。標簽,{的名字=" ${local.prefix}-unity-catalog我角色”})}
還創建一個文件命名metastore-storage.auto.tfvars使用以下配置代碼,並根據需要替換metastore存儲標簽。這使您能夠重用metastore-storage.tf在其他項目中不改變這個值metastore-storage.tf文件本身。
metastore-storage.auto.tfvars
metastore_storage_label=“metastore”
本節展示了如何配置metastore部署到一個帳戶。另請參閱databricks_metastore,databricks_metastore_data_access,databricks_metastore_assignment。
配置metastore部署,創建一個文件命名metastore.tf使用以下配置代碼:
metastore.tf
變量“metastore_name”{}變量“metastore_label”{}變量“default_metastore_workspace_id”{}變量“default_metastore_default_catalog_name”{}資源“databricks_metastore”“metastore”{的名字=var。metastore_namestorage_root=“s3: / /美元{aws_s3_bucket.metastore.id}美元/{var.metastore_label}”force_destroy=真正的}資源“databricks_metastore_data_access”“metastore_data_access”{depends_on=(databricks_metastore。metastore]metastore_id=databricks_metastore。metastore。id的名字=aws_iam_role。metastore_data_access。的名字aws_iam_role{role_arn=aws_iam_role。metastore_data_access。在攻擊}is_default=真正的}資源“databricks_metastore_assignment”“default_metastore”{depends_on=(databricks_metastore_data_access。metastore_data_access]workspace_id=var。default_metastore_workspace_idmetastore_id=databricks_metastore。metastore。iddefault_catalog_name=var。default_metastore_default_catalog_name}
還創建一個文件命名metastore.auto.tfvars使用以下配置代碼,並根據需要替換的值。這使您能夠重用metastore.tf在其他項目中在不改變這些值metastore.tf文件本身。
metastore.auto.tfvars
metastore_name=“my_metastore”metastore_label=“metastore”default_metastore_workspace_id=“< workspace-id >”default_metastore_default_catalog_name=“my_catalog”
本節展示了如何配置的部署目錄為現有metastore。另請參閱databricks_catalog。
配置部署目錄,創建一個文件命名catalog.tf使用以下配置代碼:
catalog.tf
變量“catalog_name”{}資源“databricks_catalog”“目錄”{depends_on=(databricks_metastore_assignment。default_metastore]metastore_id=databricks_metastore。metastore。id的名字=var。catalog_name}
還創建一個文件命名catalog.auto.tfvars使用以下配置代碼,並根據需要替換目錄的名稱。這使您能夠重用catalog.tf在其他項目中不改變這個值catalog.tf文件本身。
catalog.auto.tfvars
catalog_name=“my_catalog”
如果你有一個你想使用現有metastore,替換databricks_metastore.metastore.id與現有metastore編程的ID。這個ID,您可以調用得到/ api / 2.1 / unity-catalog / metastores操作的統一目錄API 2.1或運行磚unity-catalog metastores列表命令的統一目錄CLI。
databricks_metastore.metastore.id
得到/ api / 2.1 / unity-catalog / metastores
本節展示了如何配置部署前目錄的訪問授權的現有的組。另請參閱databricks_grants。要使用這個配置,您必須知道現有的組的名稱,你想授權訪問。
配置目錄的訪問授權部署,創建一個文件命名catalog-grants.tf使用以下配置代碼:
catalog-grants.tf
變量“catalog_admins_display_name”{}變量“catalog_privileges”{}數據“databricks_group”“catalog_admins”{display_name=var。catalog_admins_display_name}資源“databricks_grants”“目錄”{depends_on=(databricks_catalog。目錄]目錄=databricks_catalog。目錄。的名字格蘭特{主要=數據。databricks_group。catalog_admins。display_name特權=var。catalog_privileges}}
還創建一個文件命名catalog-grants.auto.tfvars使用以下配置代碼。改變指定的組名和根據需要授予特權。可用資金的完整列表,請參閱databricks_grants。這使您能夠重用catalog-grants.tf在其他項目中在不改變這些值catalog-grants.tf文件本身。
catalog-grants.auto.tfvars
catalog_admins_display_name=“管理員”catalog_privileges=(“特權”]
如果你想使用一個現有的目錄,刪除線開始depends_on,替換databricks_catalog.catalog.name與現有的目錄的名字。
depends_on
databricks_catalog.catalog.name
創建新組與磚起程拓殖的提供者,而不是使用現有的組,明白了創建用戶和組。
本節展示了如何配置的部署模式到前麵的目錄。另請參閱databricks_schema。
配置部署模式,創建一個文件命名schema.tf使用以下配置代碼:
schema.tf
變量“schema_name”{}資源“databricks_schema”“模式”{depends_on=(databricks_catalog。目錄]catalog_name=databricks_catalog。目錄。的名字的名字=var。schema_name}
還創建一個文件命名schema.auto.tfvars使用以下配置代碼,並根據需要替換模式的名稱。這使您能夠重用schema.tf在其他項目中不改變這個值schema.tf文件本身。
schema.auto.tfvars
schema_name=“my_schema”
如果你想使用一個現有的目錄,刪除線開始depends_on,替換databricks_catalog.catalog.name與現有的模式的目錄名稱。
本節展示了如何配置部署前的訪問授權的模式對現有組。另請參閱databricks_grants。要使用這個配置,您必須知道現有的組的名稱,你想授權訪問。
配置模式的訪問授權部署,創建一個文件命名schema-grants.tf使用以下配置代碼:
schema-grants.tf
變量“schema_admins_display_name”{}變量“schema_privileges”{}數據“databricks_group”“schema_admins”{display_name=var。schema_admins_display_name}資源“databricks_grants”“模式”{depends_on=(databricks_schema。模式]模式=" ${databricks_catalog.catalog.name}。${databricks_schema.schema.name}”格蘭特{主要=數據。databricks_group。schema_admins。display_name特權=var。schema_privileges}}
還創建一個文件命名schema-grants.auto.tfvars使用以下配置代碼。改變指定的組名和根據需要授予特權。可用資金的完整列表,請參閱databricks_grants。這使您能夠重用schema-grants.tf在其他項目中在不改變這些值schema-grants.tf文件本身。
schema-grants.auto.tfvars
schema_admins_display_name=“管理員”schema_privileges=(“特權”]
如果你有一個你想使用現有模式,刪除線開始depends_on、替換$ {databricks_catalog.catalog.name}與現有的模式的目錄名稱,和替換$ {databricks_schema.schema.name}與現有的模式的名稱。
$ {databricks_catalog.catalog.name}
$ {databricks_schema.schema.name}
本節展示如何配置部署外部存儲器。這個外部存儲由Amazon S3 bucket的還有一個我的角色,允許統一目錄權限訪問和管理數據在桶裏。另請參閱aws_s3_bucket,aws_s3_bucket_public_access_block,aws_iam_policy,aws_iam_role,databricks_storage_credential,databricks_external_location。
部署配置外部存儲,創建一個文件命名external-storage.tf使用以下配置代碼。
external-storage.tf
變量“external_storage_label”{}變量“external_storage_location_label”{}資源“aws_s3_bucket”“外部”{桶=" ${local.prefix}- ${var.external_storage_label}”acl=“私人”版本控製{啟用=假}force_destroy=真正的標簽=合並(當地的。標簽,{的名字=" ${local.prefix}- ${var.external_storage_label}”})}資源“aws_s3_bucket_public_access_block”“外部”{桶=aws_s3_bucket。外部。idignore_public_acls=真正的depends_on=(aws_s3_bucket。外部]}資源“aws_iam_policy”“external_data_access”{政策=jsonencode({版本=“2012-10-17”Id=" ${aws_s3_bucket.external.id}訪問“聲明=({“行動”:(“s3: GetObject”,“s3: GetObjectVersion”,“s3: propertynames”,“s3: PutObjectAcl”,“s3: DeleteObject”,“s3: ListBucket”,“s3: GetBucketLocation”),“資源”:(aws_s3_bucket。外部。在攻擊," ${aws_s3_bucket.external.arn}/ *”),“效應”:“允許”}]})標簽=合並(當地的。標簽,{的名字=" ${local.prefix}-unity-catalog美元{var.external_storage_label}訪問我的政策”})}資源“aws_iam_role”“external_data_access”{的名字=" ${local.prefix}外部訪問”assume_role_policy=數據。aws_iam_policy_document。passrole_for_unity_catalog。jsonmanaged_policy_arns=(aws_iam_policy。external_data_access。在攻擊]標簽=合並(當地的。標簽,{的名字=" ${local.prefix}-unity-catalog美元{var.external_storage_label}訪問我的角色”})}資源“databricks_storage_credential”“外部”{的名字=aws_iam_role。external_data_access。的名字aws_iam_role{role_arn=aws_iam_role。external_data_access。在攻擊}}資源“databricks_external_location”“一些”{的名字=" ${var.external_storage_label}”url=“s3: / /美元{local.prefix}- ${var.external_storage_label}美元/{var.external_storage_location_label}”credential_name=databricks_storage_credential。外部。id}
還創建一個文件命名external-storage.auto.tfvars使用以下配置代碼,並根據需要替換的值。這使您能夠重用external-storage.tf在其他項目中在不改變這些值external-storage.tf文件本身。
external-storage.auto.tfvars
external_storage_label=“外部”external_storage_location_label=“一些”
本節展示了如何配置部署前的訪問授權的外部存儲現有組。另請參閱databricks_grants。要使用這個配置,您必須知道現有的組的名稱,你想授權訪問。
配置外部訪問授予部署,創建一個文件命名external-storage-grants.tf使用以下配置代碼。改變指定的組名,添加額外的組,並指定所需的額外授予特權。可用資金的完整列表,請參閱databricks_grants。
external-storage-grants.tf
變量“external_storage_admins_display_name”{}變量“external_storage_privileges”{}數據“databricks_group”“external_storage_admins”{display_name=var。external_storage_admins_display_name}資源“databricks_grants”“external_storage_credential”{storage_credential=databricks_storage_credential。外部。id格蘭特{主要=var。external_storage_admins_display_name特權=var。external_storage_privileges}}資源“databricks_grants”“external_storage”{external_location=databricks_external_location。一些。id格蘭特{主要=var。external_storage_admins_display_name特權=var。external_storage_privileges}}
還創建一個文件命名external-storage-grants.auto.tfvars使用以下配置代碼。改變指定的組名和根據需要授予特權。可用資金的完整列表,請參閱databricks_grants。這使您能夠重用external-storage-grants.tf在其他項目中在不改變這些值external-storage-grants.tf文件本身。
external-storage-grants.auto.tfvars
external_storage_admins_display_name=“管理員”external_storage_privileges=(“特權”]
如果你有一個你想使用現有的外部存儲憑證,替換databricks_storage_credential.external.id與現有的外部存儲憑證的程序化的ID。這個ID,您可以調用得到/ api / 2.1 / unity-catalog / storage-credentials操作的統一目錄API 2.1或運行磚unity-catalog storage-credentials列表命令的統一目錄CLI。
databricks_storage_credential.external.id
得到/ api / 2.1 / unity-catalog / storage-credentials
如果你有一個你想使用現有的外部存儲資源,取代databricks_external_location.some.id與現有的外部存儲資源的程序化的ID。這個ID,您可以調用得到/ api / 2.1 / unity-catalog / external-locations操作的統一目錄API 2.1或運行磚unity-catalog external-locations列表命令的統一目錄CLI。
databricks_external_location.some.id
得到/ api / 2.1 / unity-catalog / external-locations
配置管理的表不支持與磚起程拓殖的提供者。配置管理表,請參閱創建表和創建您的第一個表和管理權限。
配置外部表不支持與磚起程拓殖的提供者。配置外部表,請參閱創建表。
本節展示了如何配置訪問授權的部署現有表或外部表現有組織管理。另請參閱databricks_grants。使用這種配置,您必須了解表的名稱,以及現有的組的名稱,你想授權訪問。
配置表的訪問授權部署,創建一個文件命名table-grants.tf使用以下配置代碼:
table-grants.tf
變量“table_admins_display_name”{}變量“table_catalog_name”{}變量“table_schema_name”{}變量“table_table_name”{}變量“table_privileges”{}數據“databricks_group”“table_admins”{display_name=var。table_admins_display_name}資源“databricks_grants”“表”{表=" ${var.table_catalog_name}。${var.table_schema_name}。${var.table_table_name}”格蘭特{主要=數據。databricks_group。table_admins。display_name特權=var。table_privileges}}
還創建一個文件命名table-grants.auto.tfvars使用以下配置代碼。改變指定的目錄名稱,模式名稱,表名,組名,並根據需要授予特權。可用資金的完整列表,請參閱databricks_grants。這使您能夠重用table-grants.tf在其他項目中在不改變這些值table-grants.tf文件本身。
table-grants.auto.tfvars
table_admins_display_name=“管理員”table_catalog_name=“my_catalog”table_schema_name=“my_schema”table_table_name=“my_table”table_privileges=(“特權”]
配置管理表的視圖不支持與磚起程拓殖的提供者。配置視圖,看看創建視圖。
本節展示了如何配置部署現有視圖的訪問授權管理表現有組。另請參閱databricks_grants。使用這種配置,您必須了解管理表的名稱,以及現有的組的名稱,你想授權訪問。
配置視圖的訪問授權部署,創建一個文件命名view-grants.tf使用以下配置代碼:
view-grants.tf
變量“view_admins_display_name”{}變量“view_catalog_name”{}變量“view_schema_name”{}變量“view_table_name”{}變量“view_privileges”{}數據“databricks_group”“view_admins”{display_name=var。view_admins_display_name}資源“databricks_grants”“managed_table_view”{表=" ${var.view_catalog_name}。${var.view_schema_name}。${var.view_table_name}”格蘭特{主要=數據。databricks_group。view_admins。display_name特權=var。view_privileges}}
還創建一個文件命名view-grants.auto.tfvars使用以下配置代碼。改變指定的目錄名稱,模式名稱,表名,組名,並根據需要授予特權。可用資金的完整列表,請參閱databricks_grants。這使您能夠重用view-grants.tf在其他項目中在不改變這些值view-grants.tf文件本身。
view-grants.auto.tfvars
view_admins_display_name=“管理員”view_catalog_name=“my_catalog”view_schema_name=“my_schema”view_table_name=“my_table”view_privileges=(“特權”]
本節展示了如何配置部署的集群使用統一目錄。
集群配置,創建一個文件命名cluster.tf使用以下配置代碼。這個配置的集群部署最少的計算資源和最新數據磚長期運行時支持(LTS)版本。另請參閱databricks_cluster。
cluster.tf
變量“cluster_name”{}變量“cluster_autotermination_minutes”{}變量“cluster_num_workers”{}變量“cluster_data_security_mode”{}#創建集群的“最小”#資源允許的。數據“databricks_node_type”“最小”{local_disk=真正的}#使用最新的磚運行時#長期支持(LTS)版本。數據“databricks_spark_version”“latest_lts”{long_term_support=真正的}資源“databricks_cluster”“這”{cluster_name=var。cluster_namenode_type_id=數據。databricks_node_type。最小的。idspark_version=數據。databricks_spark_version。latest_lts。idautotermination_minutes=var。cluster_autotermination_minutesnum_workers=var。cluster_num_workersdata_security_mode=var。cluster_data_security_mode}輸出“cluster_url”{價值=databricks_cluster。這。url}
還創建一個文件命名cluster.auto.tfvars使用以下配置變量,指定集群的名稱、數量的前幾分鍾自動終止由於缺乏運動,工人的數量,為統一編目數據安全模式。這使您能夠重用cluster.tf在其他項目中在不改變這些值cluster.tf文件本身。
cluster.auto.tfvars
cluster_name=“我的集群”cluster_autotermination_minutes=60cluster_num_workers=1cluster_data_security_mode=“SINGLE_USER”
驗證起程拓殖的語法沒有部署配置,運行起程拓殖驗證命令。
起程拓殖驗證
顯示起程拓殖將采取什麼行動部署配置,運行起程拓殖計劃命令。該命令並不實際部署配置。
起程拓殖計劃
部署配置,運行起程拓殖部署命令。
起程拓殖部署
刪除已部署的資源,運行起程拓殖摧毀命令。
起程拓殖摧毀