如何获取任何CSV文件并将其转换为JSON?(使用python作为脚本引擎)[尝试学习NiFi的新手用户]

时间:2018-07-21 02:06:38

标签: json apache csv apache-nifi

1)有一个包含以下信息的CSV文件(第一行是标题):

first,second,third,total
1,4,9,14
7,5,2,14
3,8,7,18

2)我想找到各个行的总和,并生成带有修改后的标头的最终文件。最终文件应如下所示:

[
{
"first": 1,
"second": 4,
"third": 9,
"total": 14
},
{
"first": 7,
"second": 5,
"third": 2,
"total": 14
 },
 {
"first": 3,
"second": 8,
"third": 7,
"total": 18
 }
 ]

但是它不起作用,我不确定如何解决此问题。谁能为我提供有关如何解决此问题的理解? NiFi流量:  NiFi flow

2 个答案:

答案 0 :(得分:0)

尽管我不喜欢Python,但通过谷歌搜索我认为这样做可能会做到:

import csv
with open("YOURFILE.csv") as f:
    reader = csv.DictReader(f)
    data = [r for r in reader]

import json
with open('result.json', 'w') as outfile:
    json.dump(data, outfile)

答案 1 :(得分:0)

您可以使用查询记录处理器并将新属性添加为

总计

select first,second,third,first+second+third total from FLOWFILE

配置 CsvReader控制器服务,并将所有字段的 int 匹配为 avro模式作为数据类型,并< strong> Json Setwriter控制器服务,包括总计字段名称,以便来自“查询记录”处理器的输出将是所有列,并且这些列的总和为总计

从查询记录处理器连接总体关系以进行进一步处理

请参阅有关Query RecordConfigure Record Reader/Writer的这些链接