本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
教程:通过开发终端节点设置 PyCharm Professional
本教程介绍如何将您的本地计算机上运行的 PyCharm Professional
要以交互方式连接到开发终端节点,您必须安装 PyCharm Professional。您不能使用免费版进行这项操作。
注意
本教程使用 Amazon S3 作为数据源。如果要改用 JDBC 数据源,则必须在 Virtual Private Cloud (VPC) 中运行开发终端节点。要使用 SSH 连接到 VPC 中的开发终端节点,则必须创建 SSH 隧道。本教程不包含有关创建 SSH 隧道的说明。有关使用 SSH 连接到 VPC 中的开发终端节点的信息,请参阅 AWS 安全博客中的 Securely Connect to Linux Instances Running in a Private Amazon VPC
将 PyCharm Professional 连接到开发终端节点
-
在 PyCharm 中创建新的纯 Python 项目,将其命名为
legislators
。 -
在项目中创建一个名为
get_person_schema.py
的文件,该文件包含以下内容:from pyspark.context import SparkContext from awsglue.context import GlueContext def main(): # Create a Glue context glueContext = GlueContext(SparkContext.getOrCreate()) # Create a DynamicFrame using the 'persons_json' table persons_DyF = glueContext.create_dynamic_frame.from_catalog(database="legislators", table_name="persons_json") # Print out information about this data print("Count: ", persons_DyF.count()) persons_DyF.printSchema() if __name__ == "__main__": main()
-
请执行以下操作之一:
-
对于 AWS Glue 版本 0.9,将 AWS Glue Python 库文件
PyGlue.zip
从https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl/python/PyGlue.zip
下载到您的本地计算机上的方便位置。 -
对于 AWS Glue 版本 1.0 及更高版本,将 AWS Glue Python 库文件
PyGlue.zip
从https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl-1.0/python/PyGlue.zip
下载到您的本地计算机上的方便位置。
-
-
在 PyCharm 中将
PyGlue.zip
添加为您项目的内容根:-
在 PyCharm 中,依次选择 File (文件)、Settings (设置),打开 Settings (设置) 对话框。(也可以按
Ctrl+Alt+S
。) -
展开
legislators
项目,然后选择 Project Structure (项目结构)。然后,在右侧窗格中,选择 + Add Content Root (+ 添加内容根)。 -
导航到您保存
PyGlue.zip
的位置,选择该位置,然后选择 Apply (应用)。
Settings (设置) 屏幕上显示的内容应类似于:
选择 Apply (应用) 后,保持 Settings (设置) 对话框处于打开状态。
-
-
配置部署选项,使用 SFTP 将本地脚本上传到您的开发终端节点 (此功能仅在 PyCharm Professional 中可用):
-
在 Settings (设置) 对话框中,展开 Build, Execution, Deployment (构建、执行、部署) 部分。选择 Deployment (部署) 子部分。
-
选择中间窗格顶部的 + 图标,添加新服务器。将其 Type (类型) 设置为
SFTP
并为其命名。 -
将 SFTP host (SFTP 主机) 设置为开发终端节点的 Public address (公有地址),如其详细信息页面上所示。(在 AWS Glue 控制台中选择开发终端节点的名称可显示详细信息页面)。对于正在 VPC 中运行的开发终端节点,请将 SFTP host (SFTP 主机) 设置为主机地址,并将 SSH 隧道的本地端口设置为开发终端节点。
-
将 User name (用户名) 设置为
glue
。 -
将 Auth type (验证类型) 设置为 Key pair (OpenSSH or Putty) (密钥对 (OpenSSH 或 Putty))。通过浏览到您的开发终端节点私有密钥文件所在的位置,设置 Private key file (私有密钥文件)。请注意,PyCharm 仅支持 DSA、RSA 和 ECDSA OpenSSH 密钥类型,不接受 Putty 的私有格式密钥。您可以使用最新版本的
ssh-keygen
生成 PyCharm 接受的密钥对类型,例如使用以下语法:ssh-keygen -t rsa -f
<key_file_name>
-C "<your_email_address>
" -
选择 Test connection (测试连接),并允许测试连接。如果连接成功,选择 Apply (应用)。
现在,Settings (设置) 屏幕上显示的内容应类似于:
同样,选择 Apply (应用) 后,保持 Settings (设置) 对话框处于打开状态。
-
-
将本地目录映射到远程目录进行部署:
-
在右侧窗格中,选择 Deployment (部署) 页面,选择顶部的中间选项卡,即标签为 Mappings (映射) 的选项卡。
-
在 Deployment Path (部署路径) 列中,输入
/home/glue/scripts/
下的路径,以部署您的项目路径。例如:/home/glue/scripts/legislators
。 -
选择 应用。
现在,Settings (设置) 屏幕上显示的内容应类似于:
选择 OK (确定) 以关闭 Settings (设置) 对话框。
-
将脚本部署到您的开发终端节点
-
选择 Tools (工具)、Deployment (部署),然后选择要在其下设置开发终端节点的名称,如下图所示:
部署脚本后,屏幕底部显示的内容应类似于:
-
在菜单栏上,选择 Tools (工具)、Deployment (部署)、Automatic Upload (always) (自动上传(始终))。确保 Automatic Upload (always) (自动上传(始终)) 旁边显示了复选标记。
启用此选项后,PyCharm 会自动将更改后的文件上传到开发终端节点。
配置远程解释器
将 PyCharm 配置为在开发终端节点上使用 Python 解释器。
-
从 File (文件) 菜单中,选择 Settings (设置)。
-
展开项目 legislators,然后选择 Project Interpreter (项目解释器)。
-
选择 Project Interpreter (项目解释器) 列表旁边的齿轮图标,然后选择 Add (添加)。
-
在 Add Python Interpreter (添加 Python 解释器) 对话框的左侧窗格中,选择 SSH Interpreter (SSH 解释器)。
-
选择 Existing server configuration (现有服务器配置),然后在 Deployment configuration (部署配置) 列表中,选择您的配置。
您的屏幕上显示的内容应类似于以下图像。
-
选择 Move this server to IDE settings (将此服务器移至 IDE 设置),然后选择 Next (下一步)。
-
在 Interpreter (解释器) 字段中,将路径更改为
/usr/bin/gluepython
(如果您使用的是 Python 2)或/usr/bin/gluepython3
(如果您使用的是 Python 3)。然后选择完成。
在开发终端节点上运行您的脚本
要运行脚本,请执行以下操作:
-
在左侧窗格中,右键单击文件名,然后选择 Run '
<filename>
' (运行“<filename>”)。在一系列消息之后,最终输出应显示计数和架构。
Count: 1961 root |-- family_name: string |-- name: string |-- links: array | |-- element: struct | | |-- note: string | | |-- url: string |-- gender: string |-- image: string |-- identifiers: array | |-- element: struct | | |-- scheme: string | | |-- identifier: string |-- other_names: array | |-- element: struct | | |-- lang: string | | |-- note: string | | |-- name: string |-- sort_name: string |-- images: array | |-- element: struct | | |-- url: string |-- given_name: string |-- birth_date: string |-- id: string |-- contact_details: array | |-- element: struct | | |-- type: string | | |-- value: string |-- death_date: string Process finished with exit code 0
现在,您已设置为在开发终端节点上远程调试脚本。