【问题标题】:Hive solution to select/treat null string as NULL将空字符串选择/处理为 NULL 的 Hive 解决方案
【发布时间】:2017-07-14 02:20:44
【问题描述】:

我有一个 Hive 外部表,其中包含 csv 数据。一些字符串字段的值为“null”。现在,我想选择数据并以 ORC 格式插入到其他表中,查询如“select * from first insert into second”。 我想用实际的 NULL 值替换字符串“null”。

一种解决方案可以将“null”替换为空白,并将我的表格设计为将空白视为 null。这可能会奏效。但是,如果数据中存在任何空白值,这些值也将被视为 NULL。

我想到的另一点是,表中有大量带有此类字符串的列。因此,如果解决方案需要选择一列并执行某些操作;我将不得不写一个很长的查询。但如果没有其他选择,那也可以。

请提出解决方案。

【问题讨论】:

  • 而不是* 使用列列表,如a、b、c 等。并使用CASE 语句。喜欢case when a = 'null' then null else a end as a

标签: hadoop hive


【解决方案1】:

您需要做的就是更改您的外部表,以便它将null 字符串视为NULL

alter table my_external_table set tblproperties('serialization.null.format'='null');

【讨论】:

    【解决方案2】:

    Hive 的更新版本支持标准的NULLIF() 函数。如果您使用的是insert,那么无论如何您都应该列出这些列:

    insert into second(col1, col2, col3, . . .)
        select col1, nullif(col2, 'null'), col3, . . .
        from first;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 2018-01-26
      • 1970-01-01
      • 1970-01-01
      • 2013-09-27
      • 2019-05-03
      相关资源
      最近更新 更多