У меня есть следующий поток в NIFI, в JSON есть (1000+) объектов.
invokeHTTP->SPLIT JSON->putMongo
Поток работает нормально, пока я не получу несколько ключей в json с "." во имя. например "Spark.databricks.acl.dfAclsEnabled".
мое текущее решение не оптимально, я набросал плохие ключи и использую текстовый процессор множественной замены для замены "." с "_". Я не использую REGEX, я использую строковый литерал find / replace. Поэтому каждый раз, когда я получаю сбой в процессоре putMongo, я вставляю новый процессор replaceText.
Это невозможно отремонтировать. Мне интересно, могу ли я использовать JOLT для этого? пара информации относительно ввода JSON.
1) нет заданной структуры, единственное, что подтверждается. все будет в массиве событий. Но сам объект события имеет свободную форму.
2) максимальный размер списка = 1000.
3) Сторонний JSON, поэтому я не могу попросить изменить формат.
Также клавиша с «.» Может появляться где угодно. Поэтому я ищу спецификацию JOLT, которая может очистить на всех уровнях, а затем переименовать.
{
"events": [
{
"cluster_id": "0717-035521-puny598",
"timestamp": 1531896847915,
"type": "EDITED",
"details": {
"previous_attributes": {
"cluster_name": "Kylo",
"spark_version": "4.1.x-scala2.11",
"spark_conf": {
"spark.databricks.acl.dfAclsEnabled": "true",
"spark.databricks.repl.allowedLanguages": "python,sql"
},
"node_type_id": "Standard_DS3_v2",
"driver_node_type_id": "Standard_DS3_v2",
"autotermination_minutes": 10,
"enable_elastic_disk": true,
"cluster_source": "UI"
},
"attributes": {
"cluster_name": "Kylo",
"spark_version": "4.1.x-scala2.11",
"node_type_id": "Standard_DS3_v2",
"driver_node_type_id": "Standard_DS3_v2",
"autotermination_minutes": 10,
"enable_elastic_disk": true,
"cluster_source": "UI"
},
"previous_cluster_size": {
"autoscale": {
"min_workers": 1,
"max_workers": 8
}
},
"cluster_size": {
"autoscale": {
"min_workers": 1,
"max_workers": 8
}
},
"user": ""
}
},
{
"cluster_id": "0717-035521-puny598",
"timestamp": 1535540053785,
"type": "TERMINATING",
"details": {
"reason": {
"code": "INACTIVITY",
"parameters": {
"inactivity_duration_min": "15"
}
}
}
},
{
"cluster_id": "0717-035521-puny598",
"timestamp": 1535537117300,
"type": "EXPANDED_DISK",
"details": {
"previous_disk_size": 29454626816,
"disk_size": 136828809216,
"free_space": 17151311872,
"instance_id": "6cea5c332af94d7f85aff23e5d8cea37"
}
}
]
}