微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Hive 中处理带和不带双引号的数据

如何解决在 Hive 中处理带和不带双引号的数据

有人可以指导我如何在 hive 中加载数据,在那里我得到“在某些行中,而在某些行中,数据没有”相同的列值。

(defun run-all ()
  (mapcar #'funcall *all-interesting-functions*))

在上面 id '2' " 的数据中,desc 列值中没有。

我的创建声明:

    Sample Data:

    id,name,desc,uqc,roll,age
    1,Monali,"abhc,jkjk",23,23
    2,mj,nhiijkla,67,60
    7,jena,"kdjuu,hsysi,juw",3,34,23
    1,"/"coppers bars","rods and profiles"/",money,"/"coupling","FLANGES & CROSS OVER"/",60

加载数据时我没有收到任何错误。但是当我做 select * from testing.select 语句时没有执行。以上创建和选择语句工作正常如果数据带有“,但如果数据带有和不带有“则不起作用。

解决方法

目前正则表达式中的第三组用引号括起来(引号是强制性的)。尝试使引号可选 "? - 表示零个或一个引号,同时使组内容非贪婪 (.*?),因此它不会在组内捕获额外的引号:

'input.regex'='^(\\d+?),(.*?),"?(.*?)"?,([0-9.]*),(\\d*),(\\d*).*' 

使用 regexp_replace 测试您的数据示例,我还在第 3 组周围添加了可选斜线以将其从输出中删除

with mytable as (
select stack(6,'1,Monali,"abhc,jkjk",23,23','2,mj,nhiijkla,67,60','7,jena,"kdjuu,hsysi,juw",3,34,"/"coppers bars","rods and profiles"/",money,"/"COUPLING","FLANGES & CROSS OVER"/","17",19"LCD PANEL FOR COMPUTER",60'
) as initial_data
)

select regexp_replace(initial_data,'^(\\d+?),"?/?(.*?)/?"?,(\\d*).*','$1 || $2 || $3 || $4 || $5 || $6'
                     ) as parsed_result
 from mytable

结果(由两个竖线和空格 ' || ' 分隔):

parsed_result
1 || Monali || abhc,jkjk || || 23 || 23
2 || mj || nhiijkla || 67 || 23 || 60
7 || jena || kdjuu,juw || 3 || 34 || 23
1 || Monali || "coppers bars","rods and profiles" || || 23 || 23
2 || money || "COUPLING","FLANGES & CROSS OVER" || 67 || 23 || 60
2 || money || 17",19"LCD PANEL FOR COMPUTER || 67 || 23 || 60

因此,如果结果看起来不错,请在表 DDL 中使用此正则表达式:

'input.regex'='^(\\d+?),(\\d*).*'

在整个数据集上仔细测试并检查空值/空值,必要时修复正则表达式。

,

试试这个标签:

ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?