Where子句匹配但在Hive中返回null

时间:2014-04-04 18:32:39

标签: hadoop hive hiveql

我有一个包含字符串格式数据的表。当我尝试选择与特定产品ID匹配的所有记录时,map reduce会运行其作业并在最终没有实际结果的情况下给出OK。我知道有关该产品ID的数据存在于表中。我哪里错了? 我的问题是

select * from tablename where product_id='xxxx';

解决

我弄明白为什么会这样。对于面临同样问题的其他人,请尝试检查您的字符串格式。我的product_id保存为" xxxx"在文件中。因此,在查询时,如果我从tablename中选择*,其中product_id ='" xxxx"&#39 ;;有效。我摆脱了那些额外的报价。

3 个答案:

答案 0 :(得分:1)

这通常是因为很难看到的空白,请尝试使用trim(product_id)=" xxxx"

答案 1 :(得分:0)

如果您的内容中有空格,请尝试更好一些,例如

select concat('#',product_id,'#') from tablename where product_id like '#%XXX%#';

答案 2 :(得分:0)

...我用我继承的一些数据遇到了这个,因为我要对数据进行大量操作(因为表只在10k记录范围内),所以我做了一些事情。像这样:

CREATE TABLE a AS
SELECT 
        regexp_extract(`origin`,  '^.([A-Za-z0-9]*)', 1) as origin,
        regexp_extract(`dest`,  '^.([^"]*)', 1) as dest,
FROM a-gummy

两个正则表达式中的第二个是最精确的。它要求从原始字段的第二个字符开始一个字符串,该字符串一直运行到第一个遇到的字符。

如果数据集太大而无法简单地创建表的第二个实例,则可以使用以这种方式创建的视图。