Hadoop Where子句匹配,但在配置单元中返回null

Hadoop Where子句匹配,但在配置单元中返回null,hadoop,hive,hiveql,Hadoop,Hive,Hiveql,我有一个数据为字符串格式的表。当我试图选择与特定产品id匹配的所有记录时,map reduce会运行其作业,并在最后给出OK iin,而不会给出实际结果。我知道表中存在与该产品id相关的数据。我哪里做错了? 我的问题是 select * from tablename where product_id='xxxx'; 解决了的 我明白了为什么会这样。对于其他面临相同问题的用户,请尝试检查字符串格式。我的产品id在文件中保存为“xxxx”。因此,在查询时,如果我确实从tablename中选择了*

我有一个数据为字符串格式的表。当我试图选择与特定产品id匹配的所有记录时,map reduce会运行其作业,并在最后给出OK iin,而不会给出实际结果。我知道表中存在与该产品id相关的数据。我哪里做错了? 我的问题是

select * from tablename where product_id='xxxx';

解决了的
我明白了为什么会这样。对于其他面临相同问题的用户,请尝试检查字符串格式。我的产品id在文件中保存为“xxxx”。因此,在查询时,如果我确实从tablename中选择了*,其中product_id=''xxxx';成功了。我去掉了那些多余的引号。

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

如果内容中有空白,请尝试以下操作

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

…我用我继承的一些数据遇到了这个问题,因为我要对数据执行很多操作(而且因为表仅在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
两个正则表达式中的第二个是最精确的。它要求从原始字段的第二个字符开始的字符串,该字符串与遇到的第一个“字符”一样长


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

尝试了这种方法。不起作用。我不知道为什么where子句不起作用。顺便说一句,我还没有机会直接使用它(因为它集成在Hive 0.14中,我还没有使用它),但CSV Serde有可能直接解决这个问题。如果有人正在与14合作,并且可以提出一种方法,我也很高兴看到它。