本文描述如何访问Azure砖与辛巴的JDBC驱动程序使用Azure广告身份验证。
这可能是有用的,如果你想使用一个Azure广告用户帐户连接到Azure砖。
创建一个服务主体
创建一个服务主体在Azure广告。服务主体获得用户的访问令牌。
- 打开Azure门户。
- 打开Azure活动目录服务。
- 点击应用程序注册在左边的菜单。
- 点击新的注册。
- 完整的表单并单击注册。
你的服务主体已经成功创建了。
配置服务主体的权限
- 打开创建的服务主体。
- 点击API的权限在左边的菜单。
- 点击添加一个权限。
- 点击Azure权利管理服务。
- 点击委托权限。
- 选择user_impersonation。
- 点击添加权限。
- 的user_impersonation现在允许分配给你的服务主体。
更新服务主体清单
- 点击清单在左边的菜单。
- 寻找包含“allowPublicClient”财产。
- 将值设置为真正的。
- 点击保存。
下载和配置JDBC驱动程序
- 下载砖JDBC驱动程序。
- 配置JDBC驱动程序详细的文档。
获得Azure广告令牌
使用示例代码获取Azure广告为用户令牌。
替换的变量值,适合您的帐户。
%从adal python导入AuthenticationContext authority_host_url = " https://login.microsoftonline.com/ " " # Azure砖azure_databricks_resource_id的应用程序ID = " 2 ff814a6 - 3304 - 4 - ab8 - 85 - cb - cd0e6f879c1d“#需要用户输入user_parameters ={“租户”:“< tenantId >”,“client_id”:“< clientId >”,“用户名”:“< user@domain.com >”,“密码”:<密码>}#配置AuthenticationContext #权威authority_url使用URL和承租者ID = authority_host_url + user_parameters(“承租人”)背景= AuthenticationContext (authority_url) # API调用来获取令牌token_response =上下文。acquire_token_with_username_password (azure_databricks_resource_id user_parameters(“用户”),user_parameters['密码'],user_parameters [' client_id ']) access_token = token_response [' accessToken '] refresh_token = token_response (“refreshToken”)
通过Azure广告令牌JDBC驱动程序
现在您已经用户的Azure广告令牌,你可以将它传递给JDBC驱动程序使用Auth_AccessToken在详细的JDBC URL建筑砖的连接URL驱动程序文档。
这个示例代码演示了如何通过Azure广告令牌。
% #安装python jaydebeapi pypi模块(用于演示)导入jaydebeapi大熊猫作为pd导入导入操作系统os。环境(“路径”)= " <路径下载辛巴火花JDBC / ODBC驱动程序>“# JDBC连接字符串url = " JDBC:火花:/ /亚洲开发银行- 111111111111 xxxxx.xx.azuredatabricks.net: 443 /违约;运输方式= http; ssl = 1; httpPath = sql / protocolv1 / o / < workspaceId > / < clusterId >; AuthMech = 11; Auth_Flow = 0; Auth_AccessToken = {0} " .format (access_token)尝试:康涅狄格州= jaydebeapi.connect (“com.simba.spark.jdbc。司机”,url)光标= conn.cursor() #执行SQL查询SQL = " select * from <表>”cursor.execute (SQL)结果= cursor.fetchall () column_names = [x [0] x cursor.description) pdf = pd。DataFrame(结果、列= column_names)打印(pdf.head()) #取消以下两行如果这段代码运行在工作区中的砖连接IDE或笔记本。# df = spark.createDataFrame (pdf) # df.show()最后:如果光标不是没有:cursor.close ()