【问题标题】:select row from orc snappy table in hive从 hive 中的兽人 snappy 表中选择行
【发布时间】:2020-02-14 21:18:20
【问题描述】:

我创建了一个表employee_orc,它是具有快速压缩的orc 格式。

    create table employee_orc(emp_id string, name string)
 row format delimited fields terminated by '\t' stored as orc tblproperties("orc.compress"="SNAPPY");

我已使用 insert 语句将数据上传到表中。

employee_orc table has 1000 records.

当我运行以下查询时,它会显示所有记录

select * from employee_orc;

但是当运行以下查询时,即使记录存在,它也会显示零结果。

select * from employee_orc where emp_id = "EMP456";

为什么我无法从employee_orc 表中检索到一条记录?

【问题讨论】:

    标签: sql hadoop hive


    【解决方案1】:

    记录确实存在。您可能认为它们是相同的,因为它们看起来相同,但存在一些差异。一种可能性是字符串开头或结尾的空格。为此,您可以使用like

    where emp_id like '%EMP456%'
    

    这可能会对你有所帮助。

    【讨论】:

    • 它不起作用。我们是否需要遵循任何设置来从 hive 中的 snappy 压缩 ORC 表中获取单个记录?
    【解决方案2】:

    就我而言,我不明白您为什么要在 ORC 中指定分隔符。您是否混淆了 CSV 和 ORC 或外部与托管? 我建议您以不同的方式创建表格

    创建表employee_orc(emp_id string, name string) 存储为 ORC TBL 属性 ( "orc.compress"="ZLIB");

    【讨论】:

    • 我已经做到了。但仍然无法使用 where 子句从表中检索单个记录。但是,我能够从表中检索所有记录。
    • 您能否验证 select 'A'||emp_id||'A' from employee_orc limit 10 的输出;
    猜你喜欢
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-16
    • 2019-05-26
    • 1970-01-01
    相关资源
    最近更新 更多