phpSDKを使用してAWSEMRでハイブスクリプトを実行しようとしています。スクリプトパラメータ(入力、出力、作業する日付など)を渡すにはどうすればよいですか?
ありがとう
phpSDKを使用してAWSEMRでハイブスクリプトを実行しようとしています。スクリプトパラメータ(入力、出力、作業する日付など)を渡すにはどうすればよいですか?
ありがとう
私はJava SDKでこれを行いました。基本的にPHP SDKを使用する必要があるのは、add_job_flow_steps関数で必要なパラメーターを解析することです
関数を呼び出すときに、「Args」配列の StepConfig (実行中のスクリプト用) にパラメーターを追加する必要があります。
Args - string|array - Optional - A list of command line arguments passed to the JAR file’s main function when executed. Pass a string for a single value, or an indexed array for multiple values.
引数の形式は少しわかりにくいので、次の形式の配列が必要です。
("-d","yourVariable=その値","-d","anotherVariable=AnotherValue")
したがって、最終的には次のようになります。
add_job_flow_steps('j-19430859jg9',array( new CFStepConfig(array(
'Name' => 'Run a hive script',
'HadoopJarStep' => array( 'Jar' => CFHadoopStep::run_hive_script(),
'Args' => array("-d","yourVariable=itsValue","-d","anotherVariable=AnotherValue")
))))
構文が完全に正しいかどうかはわかりません。試したことはありません。
少なくともこれは Java の場合です。PHP の場合は、関連付けられた配列が必要になる場合があります。さまざまな形式を試してみます。
これは、これらのパラメーターが他の Hadoop/Hive 構成パラメーターと混同されないようにするためだと思います。
その後、${yourVariable} を使用して、bash と同様の方法でスクリプト内のこれらの変数にアクセスできます。
SELECT * FROM TABLE WHERE column='${yourVariable};
あなたもこれで悩んでいるなら…
変数をハイブ スクリプトに渡すためのサンプル コードは、次のAmazon フォーラム スレッドにあります。