gpt4 book ai didi

hadoop - 尝试用 HQL 中的变量替换 HIVE 字符串文字

转载 作者:可可西里 更新时间:2023-11-01 16:39:33 26 4
gpt4 key购买 nike

您好,我有一个简单的创建表语句...

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}";

我不需要“hivevar:location_stage”——我只需要“env:HDFS_STAGING_DIR”。但是,两者都不起作用。我在“LOCATION”子句中都使用了两者。我都用命令行运行

hive -f test_hive_variable.sql

但我收到以下错误...

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

hive版本为Hive 1.2.1000.2.4.2.0-258

最佳答案

您的脚本可以是:

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"

关于hadoop - 尝试用 HQL 中的变量替换 HIVE 字符串文字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44275844/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com