AWSの新しいETLツールであるGlue内でNumPyやPandasなどのパッケージを使用する最も簡単な方法は何ですか?Python NumPyとPandasを利用するAWS Glueで実行したい。
現在の答えはあなただと思いますできない。 AWS Glueドキュメント によると:
純粋なPythonライブラリのみ使用できます。pandas Python Data Analysis LibraryなどのC拡張に依存するライブラリ、まだサポートされていません。
しかし、通常のpythonで書かれたライブラリをS3に含めようとした場合でも、HDFS権限の問題のために接着ジョブが失敗しました。これを解決する方法を見つけた場合は、私にも知らせてください。
純粋なpythonライブラリがなくても使用したい場合は、以下のスクリプトを使用して、グルーコードで使用できます。
import os
import site
from setuptools.command import easy_install
install_path = os.environ['GLUE_INSTALLATION']
easy_install.main( ["--install-dir", install_path, "<library-name>"] )
reload(site)
import <installed library>
ジョブの実行をクリックすると、デフォルトで折りたたまれているボタンジョブパラメータ(オプション)があり、それをクリックすると、s3にライブラリを保存するために使用できる次のオプションがあり、これは私にとっては機能します。
Pythonライブラリパス
s3:// bucket-name/folder-name/file-name
依存jarパス
s3:// bucket-name/folder-name/file-name
参照ファイルのパスs3:// bucket-name/folder-name/file-name
現時点では、Python拡張モジュールとライブラリは、純粋なPythonで記述されている限り、AWS Glue ETLスクリプトで使用できます。pandasなどのCライブラリ=現在のところサポートされておらず、他の言語で書かれた拡張機能もサポートされていません。
アップデートがあります:
... Pythonシェルジョブを使用できるようになりました... ... Python 2.7と互換性のあるAWS GlueサポートスクリプトのPythonシェルジョブBoto3、NumPy、SciPy、パンダなどのライブラリがプリロードされています。
https://aws.Amazon.com/about-aws/whats-new/2019/01/introducing-python-Shell-jobs-in-aws-glue/
ジョブを編集する場合(または新しいジョブを作成する場合)、「スクリプトライブラリとジョブパラメータ(オプション)」と呼ばれる省略されたセクションがあります。そこでは、Pythonライブラリ(およびその他のもの)のS3バケットを指定できます。その部分についてはまだ自分で試したことはありませんが、それはあなたが探しているものだと思いますために。
pythonモジュールをAWS GLUE ETLジョブに統合する場合は、それを実行できます。必要なPythonモジュールを使用できます。Glueは他にないのでPython実行環境のあるサーバーレス。SO必要なのは、pip install -t /path/to/your/dircetory
を使用してscrptが必要とするモジュールをパッケージ化することだけです。次に、s3にアップロードします。そして、AWS Glueジョブの作成中に、s3スクリプト、一時的な場所をポイントした後、高度なジョブパラメータオプションに移動すると、そこにpython_librariesオプションが表示されます。 ここに画像の説明を入力してください python s3にアップロードしたモジュールパッケージ。
選ばれた答えは2019年以降もはや真実ではありません
awswrangler
が必要です。接着剤とラムダでpandasを使用できます
https://github.com/awslabs/aws-data-wrangler
https://aws-data-wrangler.readthedocs.io/en/latest/install.html#setting-up-lambda-layer
import pandas
import awswrangler as wr
df = pandas.read_... # Read from anywhere
# Typical Pandas, Numpy or Pyarrow transformation HERE!
wr.pandas.to_parquet( # Storing the data and metadata to Data Lake
dataframe=df,
database="database",
path="s3://...",
partition_cols=["col_name"],
)
特定のバージョンをインストールするには(たとえば、AWS Glue python job)の場合)、 pythonパッケージ、たとえばパッケージ「pg8000」のページに https://pypi.org/project/pg8000/1.12.5/#files
次に、適切なバージョンを選択し、リンクをファイルにコピーして、以下のスニペットに貼り付けます。
import os
import site
from setuptools.command import easy_install
install_path = os.environ['GLUE_INSTALLATION']
easy_install.main( ["--install-dir", install_path, "https://files.pythonhosted.org/packages/83/03/10902758730d5cc705c0d1dd47072b6216edc652bc2e63a078b58c0b32e6/pg8000-1.12.5.tar.gz"] )
reload(site)