質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

AWS Glue

AWS Glueは、分析のためのデータの抽出や変換、ロードを簡単にするフルマネージド型のサービスです。データ処理の自動化の他、データ収集やETL処理も自動化・サーバレス化することが可能。AWSに保存したデータを指定すると、AWS Glueでデータ検索することもできます。

Spark

Spark(Apache Spark)とは、膨大なデータを迅速、柔軟に分散並行処理を行うフレームワークです。分析ツールであるApache Hadoopと比較し、最大で100倍の速度でデータ処理ができるとされています。

意見交換

クローズ

2回答

1043閲覧

AWS Glue の開発環境をローカルで構築できません。vscode

hidesroon

総合スコア2

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

AWS Glue

AWS Glueは、分析のためのデータの抽出や変換、ロードを簡単にするフルマネージド型のサービスです。データ処理の自動化の他、データ収集やETL処理も自動化・サーバレス化することが可能。AWSに保存したデータを指定すると、AWS Glueでデータ検索することもできます。

Spark

Spark(Apache Spark)とは、膨大なデータを迅速、柔軟に分散並行処理を行うフレームワークです。分析ツールであるApache Hadoopと比較し、最大で100倍の速度でデータ処理ができるとされています。

0グッド

0クリップ

投稿2023/06/26 04:39

編集2023/06/26 08:44

0

0

Aws Glueローカル開発環境の構築内容

参考リンク

▪️image
aws-glue-libs:glue_libs_3.0.0_image_01

▪️開発環境
mac ノート
vscode を使いたい

▪️vscode の変更箇所
Dec Containers の拡張機能追加
これに伴う json ファイルの修正

docker

1docker run -e AWS_ACCESS_KEY_ID="⚫️⚫️⚫️⚫️⚫️⚫️⚫️⚫️⚫️⚫️" \ 2 -e AWS_SECRET_ACCESS_KEY="⚫️⚫️⚫️⚫️⚫️⚫️⚫️⚫️⚫️⚫️" \ 3 -e AWS_DEFAULT_REGION="ap-northeast-1" \ 4 -itd -v ~/.aws:/home/glue_user/.aws -v $WORKSPACE_LOCATION:/home/glue_user/workspace/ \ 5 -e AWS_PROFILE=$PROFILE_NAME \ 6 -e DISABLE_SSL=true --rm -p 4040:4040 -p 18080:18080 --name glue_pyspark \ 7 amazon/aws-glue-libs:glue_libs_3.0.0_image_01 pyspark

spark

1import sys 2from pyspark.context import SparkContext, SparkConf ←修正 3from awsglue.context import GlueContext 4from awsglue.job import Job 5from awsglue.utils import getResolvedOptions 6 7 8class GluePythonSampleTest: 9 def __init__(self): 10 params = [] 11 if '--JOB_NAME' in sys.argv: 12 params.append('JOB_NAME') 13 args = getResolvedOptions(sys.argv, params) 14 15 # args = {} 16 # args["format_options"] = {"quoteChar":"\"","escaper":"","withHeader":True,"separator":","} 17 # args["connection_type"] = "s3" 18 # args["format"] = "csv" 19 # args["connection_options"] = {"paths": ["s3://★★★★/★★★★/input/"], "recurse":True} 20 # args["transformation_ctx"] = "DataSource0" 21 22 23 conf = SparkConf().set("spark.ui.port","4041") ←修正 24 sc = SparkContext.getOrCreate(conf=conf) ←修正 25 self.context = GlueContext(sc) ←修正 26 # self.context = GlueContext(SparkContext.getOrCreate()) 27 28 self.job = Job(self.context) 29 30 if 'JOB_NAME' in args: 31 jobname = args['JOB_NAME'] 32 else: 33 jobname = "test" 34 self.job.init(jobname, args) 35 36 def run(self): 37 dyf = read_json(self.context, "s3://★★★★/★★★★/order_data_1/sample1.csv") 38 dyf.printSchema() 39 40 self.job.commit() 41 42 43def read_json(glue_context, path): 44 dynamicframe = glue_context.create_dynamic_frame.from_options( 45 connection_type='s3', 46 connection_options={ 47 'paths': [path], 48 'recurse': True 49 }, 50 format='csv' 51 ) 52 return dynamicframe 53 54 55if __name__ == '__main__': 56 GluePythonSampleTest().run() 57

エラーが解決できません

最初は、下記エラーた出たのでSparkConf を修正
Service 'SparkUI' could not bind on port 4040. Attempting port 4041

このエラーは出なくなりました
⇨上の spark 修正
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
その後
下記エラーが出ましたが、解決できません
SLF4J: Class path contains multiple SLF4J bindings

解決方法もある様ですが、image を使っているので
修正方法がわかりません 参考ページ 。゚(T^T)゚。゚
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

このエラーの解決方法でなくても問題ございません
aws glue のjob を動かすローカル開発環境の構築方法を
ご教授いただけますでしょうか?

よろしくお願いいたします v(。-_-。)v

★vscode変更
イメージ説明

★動作確認
イメージ説明

★エラー
イメージ説明

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

回答2

#1

hidesroon

総合スコア2

投稿2023/07/05 01:43

編集2023/07/05 01:50

aws のサポートエンジニア様に同様の質問をさせていただきました

warning が出ているのは・・・下記に要因があるようです

Glue はローカル環境では、ジョブブックマークをご使用いただくことができません
そのため、ジョブブックマークを使用するようなスクリプトを実行した場合でも、
ジョブブックマークの設定は無効となり、本警告が出力されます。
しかしながら、本警告につきましてはジョブブックマークの設定の問題ですので、
ジョブ自体は実行いただくことが可能です。
当方の検証におきましても、同様の警告が出た状態でジョブの実行が可能であることを確認しております。

AWS Glue ETL ライブラリを使用した開発
ローカル開発の制限 をご確認ください
https://docs.aws.amazon.com/ja_jp/glue/latest/dg/aws-glue-programming-etl-libraries.html

SLF4Jが問題ではなく、ブックマークに問題があったようです

添付のサンプルを実行すると、最後の dyf.printSchema() で
root が表示されていることに気づきました

これは、読み取るファイルが空であるときに、root のみの表示になるようなので
サンプルプログラムは warning は出ていますが、最後まで実行されているようでした

データカタログからテーブルデータを読み込みしようとしているので
なぜ root になるのかはわかっていませんが、
ローカルで vscode が動く環境ができている・・・事が分かりました

もし、この件で気になる事があればなんでもコメントいただければ幸いです (o_ _)o))

2023年7月5日 追記

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#2

hidesroon

総合スコア2

投稿2023/07/11 02:08

問題解決できました

vscodeの設定(docker image) は問題ありませんでした
warning は出てきますが、プログラムの実行はできます

最後の dyf.printSchema() で root が表示されてたのは
下記パスの間違いが原因の1つでした
dyf = read_json(self.context, "s3://★★★★/★★★★/order_data_1/sample1.csv")
⇨ 正しくは
⇨ read_json(self.context, "s3://★★★★/★★★★/order_data_1")

もう1つは
s3 にある sample1.csv が s-jis でした
s-jis でも create_dynamic_frame を通す前に show() で出力させると
文字化けしたデータが見れました・・・が
create_dynamic_frameを通した後では root しか表示されませんでした
utf-8 にフォーマットしてs3にアップすると、下記が表示されました

root
|-- col0: string
|-- col1: string
|-- col2: string
|-- col3: string
|-- col4: string
|-- col5: string
|-- col6: string
|-- col7: string
|-- col8: string

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問