hadoop - Hive 从表中选择复杂类型

标签 hadoop hive hiveql

考虑一个基表 employee 和一个从名为 employee_salary_period 的员工派生的表,其中包含一个复杂的数据类型 map。如何从 employee 选择数据并将其插入到 employee_salary_period 中,其中 salary_period_map 是键值对,即 salary: period

CREATE TABLE employee(
  emp_id bigint,
  name string, 
  address string,
  salary double, 
  period string,
  position string
  )
PARTITIONED BY ( 
  dept_id bigint)
 STORED AS PARQUET


CREATE TABLE employee_salary_period(
  emp_id
  name string, 
  salary string, 
  period string,
  salary_period_map Map<String,String>,
  )
PARTITIONED BY ( 
  dept_id bigint)
 STORED AS PARQUET

我一直在试图弄清楚如何选择数据作为 salary_period_map

最佳答案

考虑使用hive提供的str_to_map函数。我希望你的 map 中只有一个键(薪水)

select
emp_id
name, 
salary, 
period,
str_to_map(concat(salary,":",period),'&',':')  as  salary_period_map
from employee_salary_period

关于hadoop - Hive 从表中选择复杂类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39513189/

相关文章:

hadoop - Hive 脚本运行时间过长

hadoop - 如何在 Hive 中做一个不区分大小写的 array_contains 子句

hadoop - 没有管理员权限的用户可以管理配置单元中的对象访问权限吗?

hadoop - 从现有的外部分区表创建新的配置单元表

amazon-web-services - 无法以正确的形式在Hive表中加载数据

hadoop - 当我尝试将hadoop jar运行到远程节点时出现错误

java - 如何在映射器(Hadoop)中使用 MATLAB 代码?

regex - Hive RegexSerDe多行日志匹配

hadoop - 合并配置单元中的列

hadoop - 在 Hive 中检索 udf 结果