まーぽんって誰がつけたの?

iOS→Scala→インフラなおじさん技術メモ

Spark on EMRで環境変数を渡す方法とちょっと注意点

f:id:masato47744:20200609200247p:plain

公式docには書いてない?かも

spark-env—spark-env.sh ファイルで値を設定します。詳細については、Spark ドキュメントの「Environment Variables」を参照してください。

公式docには、saprk-env.shで設定してくださいぐらいしか書いてなくてパッと分からなかった。リンク先のSparkドキュメント見ても、configurationで設定する方法なども見つけられなかった。

結局、別のAWSのブログ記事に書いてあるやつで、見つけられた。

spark-env.shじゃなくてconfigurationで設定する

こういうconfigを書けばOK

[
    {
      "Classification": "spark-env",
      "Configurations": [
        {
          "Classification": "export",
          "Properties": {
            "JDBC_URL": "'jdbc:mysql://localhost:3306/database?useUnicode=true&characterEncoding=UTF-8'"
          }
        }
      ]
    }
]

ここで設定した環境変数は、/etc/spark/conf/spark-env.sh/usr/lib/spark/conf/spark-env.shに書き込まれるんだけど、単にexport key=valueと追加されるだけなので、valueに=なんかが入っているとバグってしまう。なので、上記のようにシングルクオテーション等でくくっておく必要がある。