我有一张放Parquet文件的Hive桌。这些行要么保存一个html页面,要么保存一个简单的字符串。当我尝试一个简单的选择
select text from table
我把整个html作为一行。
1 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/
但当我使用任何过滤器时
select text from table where text rlike 'xml';
html中的每个标记都显示为一个单独的行。这样地
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4 <html xmlns="http://www.w3.org/1999/xhtml">
为什么会这样?
编辑
我认为这与换行符有关,但在本例中,第一个select应该返回与第二个select相同的结果,而第二个select没有返回。
也。这篇文章说,这应该不是一个问题的Parquet地板无论如何。
2条答案
按热度按时间hpcdzsge1#
好像是新台词。更换后
我可以将html作为一个字符串来处理。
vaj7vani2#
rlike是基于正则表达式的。
reference:如果a或b为null,则为rlike b null;如果a的任何子字符串(可能为空)与java正则表达式b匹配,则为true;否则为false。例如,“foobar”rlike“foo”的计算结果为true,“foobar”rlike“^f.*r$”的计算结果也是true。
所以声明
select text from table where text rlike 'xml';
将很可能检索包含字符“x”、“m”、“l”的文本的所有子字符串,同时将标记之间的空格视为分隔符。