2016-07-16 9 views
3

Spotifyのspark-bigqueryコネクタを使用してGoogle BigQueryに直接データをストリーミングするためのScala Sparkアプリケーションを開発しました。Spark on YARNとspark-bigqueryコネクタ

ローカルそれが正しく動作しますが、ここで説明したように、私はhttps://github.com/spotify/spark-bigquery

val ssc = new StreamingContext(sc, Seconds(120)) 
val sqlContext = new SQLContext(sc) 
sqlContext.setGcpJsonKeyFile("/opt/keyfile.json") 
sqlContext.setBigQueryProjectId("projectid") 
sqlContext.setBigQueryGcsBucket("gcsbucketname") 
sqlContext.setBigQueryDatasetLocation("US") 

自分のアプリケーションを設定しているが、私はYARNクラスタ上で私のスパークに申請書を提出したときに、ジョブがGOOGLE_APPLICATION_CREDENTIALS環境変数を探して失敗した...

The Application Default Credentials are not available. They are available if running in Google Compute Engine. Otherwise, the environment variable GOOGLE_APPLICATION_CREDENTIALS must be defined pointing to a file defining the credentials. 

必要な資格情報を含む.jsonファイルにrootユーザーのOS環境変数として変数を設定しましたが、それでも失敗します。

また、私は成功せず、次の行

System.setProperty("GOOGLE_APPLICATION_CREDENTIALS", "/opt/keyfile.json") 

で試してみました。

何が不足していると思いますか?

レオナルド

+0

いくつかのコードスニペットを共有できますか? –

+0

私はいくつかのコードを追加しました、あなたがもっと必要な場合はお知らせください... –

答えて

2

ドキュメント、ありがとう示唆: 「環境変数はspark.yarn.appMasterEnvを使用して設定する必要があなたのconf /火花defaults.confにファイルの[EnvironmentVariableName]プロパティ。 。 spark-env.shで設定された環境変数は、クラスタモードのYARNアプリケーションマスタプロセスに反映されません。

+0

ありがとう、あなたは非常に男!できます。 –

+0

グローバルなconfファイルを編集したくない場合は、このようなジョブを送信するときにも設定できます(YARNで実行している場合): 'spark-sumbit --conf spark.yarn.appMasterEnv.GOOGLE_APPLICATION_CREDENTIALS =/opt /keyfile.json .. jar' – Arvidaa

関連する問題