本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
教學課程:設定 PyCharm professional 與開發端點
本教學課程說明如何將您本機電腦上所執行的 PyCharm Professional
若要以互動方式連線到開發端點,必須安裝 PyCharm Professional (專業版)。如果使用免費版,將無法執行這項動作。
注意
教學課程會使用 Amazon S3 做為資料來源。如果要改為使用 JDBC 資料來源,您必須在虛擬私有雲端 (VPC) 中執行您的開發端點。若要在 VPC 中使用 SSH 連線至開發端點,您必須建立一個 SSH 通道。本教學課程不包括建立 SSH 通道的說明。如需使用 SSH 在 VPC 中連線至開發端點的資訊,請參閱 AWS 安全部落格中的安全連線置在 Private Amazon VPC 中執行的 Linux 執行個體
將 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 版,從
https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl/python/PyGlue.zip
將 AWS Glue Python 程式庫檔案PyGlue.zip
下載至您本機電腦上方便的位置。 -
針對 AWS Glue 1.0 版和更新版本,從
https://s3.amazonaws.com/aws-glue-jes-prod-us-east-1-assets/etl-1.0/python/PyGlue.zip
將 AWS Glue 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 主機設為開發端點的公用位址,如詳細資料頁面所列。(在 AWS Glue 主控台中選擇開發端點的名稱,以顯示詳細資料頁面)。如為在 VPC 中執行的開發端點,請將 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
。 -
選擇 Apply (套用)。
Settings (設定) 畫面的外觀現在應類似於下圖所示:
選擇 OK (確定) 以關閉 Settings (設定) 對話方塊。
-
將指令碼部署到您的開發端點
-
選擇 Tools (工具)、Deployment (部署),然後在您要設定開發端點使用的名稱,如下圖所示:
在部署指令碼之後,畫面的底部應類似於下圖所示:
-
在功能表中,選擇 Tools (工具)、Deployment (部署)、Automatic Upload (always) (自動上傳 (永遠))。確認 Automatic Upload (always) (自動上傳 (永遠)) 旁出現核取記號。
啟用此選項時,PyCharm 會自動將變更的檔案上傳到開發端點。
設定遠端解譯器
設定 PyCharm 在開發端點上使用 Python 解釋器。
-
在 File (檔案) 功能表中,選擇 Open (開啟)。
-
展開專案 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 (解譯器) 欄位中,如果您使用 Python 2 則變更路徑為
/usr/bin/gluepython
;如果您使用 Python 3 則變更路徑為/usr/bin/gluepython3
。然後選擇 Finish (完成)。
在開發端點上執行您的指令碼
執行指令碼:
-
在左窗格中,右鍵按一下檔案名稱,然後選擇 Run '
<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
設定已完成,您現在可以從遠端在您的開發端點上進行指令碼的除錯。