在Hive中的Variable上运行regrex_replace

时间:2017-03-02 20:28:58

标签: hive

我正在使用以下命令将配置单元中的日期字符串从public static async Task<List<UserObject>> GetRequest() { Uri geturi = new Uri("url"); //replace your url System.Net.Http.HttpClient client = new System.Net.Http.HttpClient(); System.Net.Http.HttpResponseMessage responseGet = await client.GetAsync(geturi); string response = await responseGet.Content.ReadAsStringAsync(); //return response; var json = await responseGet.Content.ReadAsStringAsync(); var result = JsonConvert.DeserializeObject<List<UserObject>>(json); return result; } private async void Button_Click(object sender, RoutedEventArgs e) { UsersObject myGetRequest = new UsersObject(); myGetRequest.users = await GetRequest(); //to iterate all users you got do this: foreach(var item in myGetRequest.users) { //do something } } 更改为2017-02-21T11:28:36

2017-02-21 11:28:36

输出正确地显示为SELECT regexp_replace('2017-02-21T11:28:36', 'T', " "); 。现在我的输入日期字符串存储在2017-02-21 11:28:36变量中。

READ_START_DATE

现在我正在运行此命令

hive>SET READ_START_DATE;                                                   
READ_START_DATE=2017-02-21T11:28:36 

此命令的输出为SELECT regexp_replace('${READ_START_DATE}', 'T', " ");

这很有意义,但我需要对变量运行${READ_S AR _DA E}命令。我怎么能这样做?

2 个答案:

答案 0 :(得分:1)

$ {的 hiveconf :READ_START_DATE}
LanguageManual VariableSubstitution

hive> set READ_START_DATE=2017-02-21T11:28:36;
hive> select regexp_replace('${hiveconf:READ_START_DATE}', 'T', " ");
OK
_c0
2017-02-21 11:28:36

答案 1 :(得分:0)

尝试使用双引号

SELECT regexp_replace("${READ_START_DATE}", 'T', " "); 

它正在使用不同的env变量,但不知道为什么不使用“READ_START_DATE”,dudu任何想法?

hive (default)> set system:java.vm.version;
system:java.vm.version=24.65-b04
hive (default)> select regexp_extract("${system:java.vm.version}",'.*?-(.*)');
OK
_c0
b04
Time taken: 0.076 seconds, Fetched: 1 row(s)