シェルスクリプトを使用して、ハイブクエリを実行したいです。 スクリプトシェルは次のようになります。
#!/bin/bash
DST_ARCHIVE_TABLE=as400_nat_pp09_siedta_raw_dev.natart_archive
SRC_TABLE_HIVE=as400_nat_pp09_siedta_raw_dev.natart_to_process
current_date=$(date +%Y%m%d%H%M%S)
hive -e 'SET hive.exec.dynamic.partition = true; SET hive.exec.dynamic.partition.mode = nonstrict; insert into table ${DST_ARCHIVE_TABLE} partition (to_porcess_ts) select * from ${SRC_TABLE_HIVE} where to_porcess_ts < ${current_date} '
しかし、このエラーが発生しました:
FAILED: ParseException line 1:19 cannot recognize input near 'table' '$' '{' in table name
{
を削除しましたしかし、私はまだ同じエラーがあります
回答 2 件
hiveconf
を使用して以下のアプローチを試してください (例を示します):1)Hiveクエリを.hqlファイルに移動します。パラメーターは
hiveconf
で示されます 。-- query.hql select * from ${hiveconf:MY_DB}.${hiveconf:MY_TABLE} limit 1
2)シェルスクリプトを作成して、クエリのパラメーター値を設定し、実行します。
-- query.sh #!/bin/bash hive -hiveconf MY_DB=default -hiveconf MY_TABLE=my_hive_table_name -f query.hql
3)実行する
./query.sh
関連記事
- zshスクリプトをzshシェル関数に変換する
- ファイル内の出現する一意の単語をカウントするシェルスクリプト
- スクリプトでこのエラーが発生するのはなぜですか? awk:scriptawk:19:「構文エラー
- Bash /シェル:bashスクリプトでCSVファイルを解析し、最初の行をスキップします
- シェルスクリプト内で変数を渡すtcsh
- Jenkins:ChromeDriverはシェルスクリプトからPATHを更新し、新しいバージョンを使用します
- シェルスクリプトで時間とCPU使用率を交換する方法
- シェルスクリプトよりも長持ちするBash変数
- URLを1回取得し、2分ごとに1時間2番目のURLを取得するシェルスクリプトを作成する方法
- シェルスクリプトからdenoを呼び出すにはどうすればよいですか?
こんにちは、以下のようにしてみてください:
または