新しいことにはウェルカム

技術 | 電子工作 | ガジェット | ゲーム のメモ書き

Spark(Google Dataproc)からAWS S3にアクセスする方法

Spark(Google Dataproc)から、AWS S3にアクセスする方法です。

手順

Spark設定

下記のSpark・Haddopの設定をすると、SparkからAWS S3ファイルの読み書きができるようになります。

  • Sparkに下記AWS関連のjarファイルを読み込みます
    • aws-java-sdk-bundle-xxxx.jar
    • hadoop-aws-xxxx.jar
  • Hadoopの設定ファイル「core-site.xml」に下記パラメータを設定します
    • fs.s3a.access.key:AWS S3のアクセスキー
    • fs.s3a.secret.key:AWS S3のシークレット

Dataproc設定

Dataproceはマネージドサービスのため、Sparkを直接いじることができません。

代わりに、Dataproceの「クラスタープロパティ」と「初期化アクション」を使って、 クラスター作成時にSpark・Hadoopの設定します。

下記の初期化アクションを作って、Google Cloud Storageにアップします。

init_action.sh

#!/bin/bash

JAR_PATH=/usr/local/lib/jars
mkdir $JAR_PATH

# AWS S3
HADOOP_PATH=/usr/lib/hadoop-mapreduce
HADOOP_AWS=hadoop-aws-2.9.2.jar
AWS_JAVA_SDK_BUNDLE=aws-java-sdk-bundle-1.11.199.jar

ln -s $HADOOP_PATH/$HADOOP_AWS           $JAR_PATH/hadoop-aws.jar
ln -s $HADOOP_PATH/$AWS_JAVA_SDK_BUNDLE  $JAR_PAth/aws-java-sdk-bundle.jar

初期化アクションでは、Sparkに追加するjarファイルの置き場所を作って、 そこに「aws-java-sdk-bundle-xxxx.jar」と「hadoop-aws-xxxx.jar」へのシンボリックリンクを設定しています。

クラスター作成

Spark(Google Dataproc)からAWS S3にアクセスする方法

  • イメージ
    • AWS関連のjarファイルは、イメージのバージョン1.4以降から同封されるので、クラスターイメージをバージョン1.4以降にします。
  • 初期化アクション
    • 先程Google Cloud Storageにアップした初期化アクションファイルを指定します
    • クラスター作成時に、このアクションが実行されます
  • クラスタプロパティ
    • [spark]:[spark.jars]:[/usr/local/lib/jars/*]
      • 「spark」でSparkの設定「spark-defaults.conf」を設定します
      • 「spark.jars」「/usr/local/lib/jars/*」で、SparkにJDBCのjarファイルを読み込ませます
    • [core]:[fs.s3a.access.key]:[xxxx]、[core]:[fs.s3a.secret.key]:[xxxx]
      • 「core」でHadoopの設定ファイル「core-site.xml」を設定します
      • 「fs.s3a.access.key・secret.key」でAWS S3のアクセスキーとシークレットを設定します

AWSのjarファイルの名前は変わる可能性があるので、ファイルが見つからない場合は、クラスターのマスターノードにSSHログインしてファイル名を確認します。

利用例

df = spark.read.format("json").load("s3a://xxxx/xxxx/test.json")
df.show()

その他感想等

読み書き両方が可能です。

S3のパスは、「s3」ではなく「s3a」なので注意が必要です。

関連カテゴリー記事

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com

www.kwbtblog.com