gpt4 book ai didi

regex - hive SERDE 正则表达式 : Output format - want to use only few of the output Strings

转载 作者:可可西里 更新时间:2023-11-01 15:29:01 27 4
gpt4 key购买 nike

输入文件如下

eno::ename::dept::sal

101::emp1::comp1::2800000

201::emp2::comp2::2800000

301::emp3::comp3::3400000

401::emp4::comp4::3600000

501::emp5::comp5::400000

>create table emp(ename string,edept string)
> row format serde 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
> WITH SERDEPROPERTIES(
> "input.regex"="^([^\\::]+)\\::([^\\::]+)\\::([^\\::]+)\\::([^\\::]+)$",
> "output.format.string"="%2$s%3$s")
> ;
>load data local inpath '/home/cloudera/test/emp.txt' into table emp;

我只想将第二个和第三个文字拉入表中。所以使用 "output.format.string"="%2$s%3$s"- 这是正确的方法吗?

但是我的表只加载了 eno 和 ename。

最佳答案

Hive 表只有两列,但正则表达式捕获四组,因此其他组将被忽略。

您可以使用以下表达式。

"input.regex"="^[^\\::]+\\::([^\\::]+)\\::([^\\::]+)\\::[^\\::]+$"

您将获得以下输出。

emp.ename   emp.edept
emp1 comp1
emp2 comp2
emp3 comp3
emp4 comp4
emp5 comp5

关于regex - hive SERDE 正则表达式 : Output format - want to use only few of the output Strings,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38280363/

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