【发布时间】:2021-12-19 01:58:09
【问题描述】:
我想将 Hadoop Yarn 作业历史文件解析为 csv/sql 格式以便轻松查询。
我从 .jhist 文件中提取了 AVRO 模式,使用 avro-tools-*.jar 将 avro 数据文件转换为 JSON 流,使用 jq 将流组合成单个 json,现在我需要提取某些字段来自某些单独的 jsons
[
{
"type": "AM_STARTED",
"event": {
"AMStarted": {
"startTime": 1636039435822,
"nodeManagerPort": 8041
}
}
},
{
"type": "TASK_STARTED",
"event": {
"TaskStarted": {
"taskid": "task_1351",
"jobStatus": "Started"
}
}
},
{
"type": "JOB_INITED",
"event": {
"JobInited": {
"launchTime": 1636039438569,
"totalMaps": 356,
"totalReduces": 100
}
}
},
{
"type": "JOB_FINISHED",
"event": {
"JobFinished": {
"jobid": "job_1636039105678_0061",
"finishTime": 1636043211181,
"totalCounters": {
"name": "TOTAL_COUNTERS",
"groups": [
{
"name": "org.apache.hadoop.mapreduce.FileSystemCounter",
"displayName": "File System Counters",
"counts": [
{
"name": "FILE_BYTES_READ",
"displayName": "FILE: Number of bytes read",
"value": 1156766568459
},
{
"name": "FILE_BYTES_WRITTEN",
"displayName": "FILE: Number of bytes written",
"value": 1720873364662
},
{
"name": "RANDOM_BYTES",
"displayName": "RANDOM: Bytes",
"value": 1720873311162
}
]
}
]
}
}
}
}
]
从类型 AM_STARTED 'json/index/row',我想要 event.AMStarted.startTime
忽略 TASK_STARTED - 我不想要任何类型中有“TASK”的东西
从 JOB_INITED,我想要所有字段
从 JOB_FINISHED,我想要完成时间,以及 FILE_BYTES_READ 和 FILE_BYTES_WRITTEN 的值
我希望所有这些都用逗号分隔(也许是“引用”),所以我可以将它们加载到 csv 中,然后再加载到 sql 表中。
预期输出:
1636039435822、1636039438569、356、100、1636043211181、1156766568459、1720873364662
this 的语法是什么?
【问题讨论】:
标签: jq hadoop-yarn