当我在hive中创建一个表时,我在map字段中得到null

时间:2016-09-30 03:10:11

标签: json dictionary null hive

我在具有以下结构的json文件中在hive中创建一个表:

{
    "id": "1",
    "clave": "1",
    "tipo_registro": "Planilla",
    "creado_por": "ETL cargaInicialPlanilla",
    "fecha_creacion": "2016-09-269T00:00:00.0Z",
    "modificado_por": "ETL cargaInicialPlanilla",
    "fecha_ultima_modificacion": "2016-09-269T00:00:00.0Z",
    "oficina": "comun",
    "valores": {
        "P_ACTIVO": "1",
        "P_AT_ACTIVO": "1",
        "P_AT_DESCRIPCION": "Fecha de Emisión",
        "P_AT_EDITABLE": "1",
        "P_AT_IDTIPODATO": "5",
        "P_AT_LARGO": "0",
        "P_AT_REPETIBLE": "0",
        "P_AT_TD_ACTIVO": "1",
        "P_AT_TD_DESCRIPCION": "System.DateTime",
        "P_AT_TD_VALOR": "System.DateTime",
        "P_IDATRIBUTOM": "15",
        "P_IDPLANILLAM": "1",
        "P_IDRECAUDO": "11",
        "P_OCULTO": "0",
        "P_ORDEN": "1"
    }
}

我把文件放在HDFS(/ user / hive / TestTable)中并用这个命令创建表:

CREATE EXTERNAL TABLE IF NOT EXISTS test
(
id STRING,
clave STRING,
tipo_registro STRING,
creado_por STRING,
fecha_creacion STRING,
modificado_por STRING,
fecha_ultima_modificacion STRING,
oficina STRING,
valor MAP<String, String>
)
ROW FORMAT SERDE 'org.openx.data.jsonserde.JsonSerDe'
LOCATION  '/user/hive/TestTable';

但是当我查询表时,我的valor或map字段始终为null。

我看到关于此的其他帖子,但是在大多数帖子中,总是使用struct而不是map,我需要使用map,因为该字段不是静态的,可能在其他文档中有不同的字段。

我会感激任何帮助,提前谢谢。

1 个答案:

答案 0 :(得分:1)

你的Json有valores,但在你的hive表中你定义为valor,这就是它总是为null的原因,将它更改为你的hive表中的valores以匹配你的json属性名,它应该可以工作。