変数の値を文字列に連結する際に問題が発生しています。 私のスクリプトは上記でハイブ変数の連結
set hivevar:tab_dt= substr(date_sub(current_date,1),1,10);
CREATE TABLE default.udr_lt_bc_${hivevar:tab_dt}
(
trans_id double
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";
の下に含まれ、変数tab_dtはYYYYMMDD形式で昨日の日付で正しく割り当てられます。 しかし、静的な文字列でテーブル名にこの変数を連結しようとすると、スクリプトは失敗します。連結を行っていません。 問題なく解決策を提供します。
注:私はあまりにもあまりにも
set hivevar:tab_dt= substr(date_sub(current_date,1),1,10);
set hivevar:tab_nm1= default.udr_lt_bc_;
set hivevar:tab_name= concat(${hivevar:tab_dt},${hivevar:tab_nm1})
CREATE TABLE ${hivevar:tab_name}
(
trans_id double
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ",";
これをerroringされ、あまりにも以下試してみましたが、エラーを返しています。
詳細なコメントはleftjoinありがとうございます。 – Sandeep
詳細なコメントはleftjoinありがとうございます。それは非常に参考になりました。実際にはシェルスクリプトで試してみましたが、コマンドラインからshファイルを実行するとうまくいきました。しかし、私がおなじワークフローから同じファイルを呼び出すと、shファイルのハイブセクションが実行されていません。私のハイブの質問はあなたが言ったこととまったく同じでした。シェルスクリプトで変数を割り当てた後、ハイブと同じスクリプトでハイブを起動します。-hivevar table_name = "$ table_name" -f your_script.hql。次に、この.shファイルをoozieのシェル・アクションとして実行します。なぜこれが起こっているのか知っていますか? – Sandeep
@Sandeep私はあなたのスクリプトとoozie設定でもう1つの質問を投稿することをお勧めします – leftjoin