【问题标题】:Convert value while inserting into HIVE table插入 HIVE 表时转换值
【发布时间】:2018-06-12 00:22:20
【问题描述】:

我创建了名为 emp_bucket 的分桶表,分为 4 个桶,这些桶聚集在薪水列上。表结构如下:

hive> describe Consultant_Table_Bucket;
OK
id                      int                                         
age                     int                                         
gender                  string                                      
role                    string                                      
salary                  double                                      
Time taken: 0.069 seconds, Fetched: 5 row(s)

我还有一个临时表,我可以从中将数据插入到上面的分桶表中。以下是暂存表中的示例数据:

id      age     Gender   role         salary
-----------------------------------------------------
938     38      F       consultant      55038.0
939     26      F       student 33319.0
941     20      M       student 97229.0
942     48      F       consultant       78209.0
943     22      M       consultant 77841.0

我的要求是将工资大于 10,000 的员工的数据加载到分桶表中,并且在加载时我必须将 "consultant" 角色 转换为 大数据顾问角色。

我知道如何使用 select 命令将数据插入到我的分桶表中,但需要一些指导,如何将上面角色列中的 consultant 值更改为 BigData advisor 插入时。

任何帮助表示赞赏

【问题讨论】:

  • 用 CASE 语句替换插入期间的列选择。说,如果是顾问,则插入另一个值
  • 如果你展示了你已经写的insert 声明,它会更容易帮助你。
  • @Guillaume 下面是我的插入语句INSERT TABLE bucketed_user PARTITION (salary) select id, age,gender,role,salary FROM stage_table where salary > 10000

标签: hadoop hive hadoop-partitioning


【解决方案1】:

根据您的insert,您只需处理selectrole 部分:

INSERT into TABLE bucketed_user PARTITION (salary)
select
    id
  , age
  , gender
  , if(role='consultant', 'BigData consultant', role) as role
  , salary
FROM
  stage_table
where
  salary > 10000
;

【讨论】:

  • 这是很棒的信息,我正在寻找
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-11-27
  • 1970-01-01
  • 1970-01-01
  • 2021-12-29
  • 1970-01-01
  • 2016-03-29
相关资源
最近更新 更多