首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >加载错误配置单元的其他记录之间的字符串列表

加载错误配置单元的其他记录之间的字符串列表
EN

Stack Overflow用户
提问于 2017-07-12 03:42:10
回答 2查看 55关注 0票数 0

我被一个问题卡住了,真的需要帮助。

以下是我的数据集

代码语言:javascript
复制
"counter","qid","i","qs","qt","tags","qvc","qac","aid","j","as","at"
"1",563355,62701,0,1235000081,"php,error,gd,image-processing",220,2,563372,67183,2,1235000501
"2",563356,15842,10,1235000140,"lisp,scheme,clojure",1047,16,563358,15842,3,1235000177

所有列都用',‘分隔,第六列是标签,这是一个由2到5个标签组成的列表,也用',’分隔。我尝试创建带有字符串和字符串数组的表,这两种方法都给出了标签列表中的第一个值(在本例中是phplisp),其余的列都是null。

代码语言:javascript
复制
"1" 563355  62701   0   1235000081  "php    NULL    NULL    NULL    220 2   563372
"2" 563356  15842   10  1235000140  "lisp   NULL    NULL    NULL    1047    16  563358

所需输出:

代码语言:javascript
复制
"1" 563355  62701   0   1235000081  "php,error,gd,image-processing" 220 2   563372
"2" 563356  15842   10  1235000140  "lisp,scheme,clojure"   1047    16  563358

我做了一些研究,发现我可以编写一个REGEXSERDE模式来读取数据,我是新手,我不知道如何编写regex模式。除了正则表达式之外,还有其他方法吗?如果没有,有人能帮我写一个正则表达式模式吗?

提前谢谢你。

EN

回答 2

Stack Overflow用户

发布于 2017-07-12 16:05:37

最简单的方法是使用其他分隔符进行更改

另一种方法是使用Open csv serde,它将帮助您做到这一点

票数 0
EN

Stack Overflow用户

发布于 2020-01-05 01:10:13

您可以使用Hive外部表

代码语言:javascript
复制
create external table try3.tablename(
counter string,
qid int,
i int,
qs int,
qt int,
tags string,
qac int,
aid int )
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
  'input.regex' = '(.*?),(.*?),(.*?),(.*?),(.*?),(\".*\"),(.*?),(.*?),.*'
)
STORED AS TEXTFILE
LOCATION '/somelocation'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45043258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档