INFO-EsToHive的使用

使用场景
场景一:ES的第一层字段包含fastjson无法解析的时间字段@timestamp
场景二:es-hadoop报错字段中不能含有点符号
场景三:ES区分大小写,Spark不区分大小写报错字段重复
使用示例
场景一:
1、选择读取成string
2、将来源所有涉及到的一级字段配置上去,若映射中未涉及的一级字段无需配置。如下示例(注意一点要将字段映射中涉及到的所有一级字段配置上去)。
source.sourceSchemaMap={"id":"string", "column2":"bigint"}
类型枚举如下,针对timestamp场景,如果无需读这个字段schema中不配置该字段即可,如果需要读就可以配置成string尝试读取成字符串。
INFO-EsToHive的使用 - 图1
场景二:
INFO-EsToHive的使用 - 图2
字段包含点的解决方案:
选取复杂字段读取为string的模式,如果想提取复杂字段的内容,使用自定义表达式用spark sql自行提取复杂字段的内容或者整段储存后下游处理。
其他特殊字符字段: 使用自定义表达式用反引号包裹解决。
例如:
get_json_object(BodyVariables, "$.BodyVariables['item.devicelD_1']")
场景三:
自定义参数:ndi.spark.spark-conf.spark.sql.caseSensitive=true
如果涉及脚本,增加代码块,填充代码

作者:刘家有