2017-05-31 11 views
0

内の変数とリテラルHIVE文字列を置換する私は「hivevar:location_stage」を必要としない...こんにちは、私は、単純なCREATE TABLEステートメントを持ってHQL

set location_stage=${env:HDFS_STAGING_DIR}; 
CREATE EXTERNAL TABLE IF NOT EXISTS stage.test(
TEST_ID INT, 
TEST_NAME STRING 
) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES (
    "separatorChar" = ",", 
    "quoteChar"  = "\"", 
    "escapeChar" = "\\") 
STORED AS TEXTFILE 
LOCATION "${hivevar:location_stage}"; 

をしよう - 私は単に「ENVが必要になります。 HDFS_STAGING_DIR 'となります。しかしどちらもうまくいきません。私は 'LOCATION'節で両方を使用しました。

FAILED: IllegalArgumentException java.net.URISyntaxException: Relative path in absolute URI: ${hivevar:location_stage%7D 

ハイブバージョンはハイブ1.2.1000.2.4.2.0-258

答えて

1

あなたのスクリプトです...私は、コマンドライン

hive -f test_hive_variable.sql 

との両方を実行しかし、私は次のエラーを取得します

CREATE EXTERNAL TABLE IF NOT EXISTS stage.test(
TEST_ID INT, 
TEST_NAME STRING 
) 
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' 
WITH SERDEPROPERTIES (
    "separatorChar" = ",", 
    "quoteChar"  = "\"", 
    "escapeChar" = "\\") 
STORED AS TEXTFILE 
LOCATION "${HDFS_STAGING_DIR}"; 

そしてHDFS_STAGING_DIRを渡すために、あなたが使用することができます:することができ

hive -f test_hive_variable.hql --hivevar HDFS_STAGING_DIR="/user/hive/warehouse/staging_dir" 
+0

私はあなたにビールを借りています –

+0

@Mikeそれにノーと言うことはできません。乾杯。 – philantrovert

関連する問題