Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
需要python代码的帮助才能将json读取到kinesis_Python_Json_Amazon Web Services_Amazon Kinesis - Fatal编程技术网

需要python代码的帮助才能将json读取到kinesis

需要python代码的帮助才能将json读取到kinesis,python,json,amazon-web-services,amazon-kinesis,Python,Json,Amazon Web Services,Amazon Kinesis,我收到了一项要完成的任务。我有一个Json文件,它有2000多条记录。因此,要求是: 从CSV读取 形成JSON有效载荷需要覆盖适当数量的字段,考虑订单抬头字段 按键移动确保每行都有自己的正确键 从动觉中检索相同的内容。 我的Json文件如下所示: {"Affliate Number": "350", "Bonus Period": "12003", "Business Entity": &quo

我收到了一项要完成的任务。我有一个Json文件,它有2000多条记录。因此,要求是:

从CSV读取 形成JSON有效载荷需要覆盖适当数量的字段,考虑订单抬头字段 按键移动确保每行都有自己的正确键 从动觉中检索相同的内容。 我的Json文件如下所示:

{"Affliate Number": "350", "Bonus Period": "12003", "Business Entity": "350", "Distributor Number": "00000971728", "Payment Amount": "00000000000393.45", "BANK ID": "SBC", "Account": "0000007659007", "Payment Date": "2020-04-15", "Payment Group": "90", "Payment Method": "02", "": ""}
{"Affliate Number": "350", "Bonus Period": "12003", "Business Entity": "350", "Distributor Number": "00000829264", "Payment Amount": "00000000000211.20", "BANK ID": "SBC", "Account": "0515096412533", "Payment Date": "2020-04-15", "Payment Group": "90", "Payment Method": "02", "": ""}
{"Affliate Number": "350", "Bonus Period": "12003", "Business Entity": "350", "Distributor Number": "00001070013", "Payment Amount": "00000000000329.72", "BANK ID": "BCOM", "Account": "017200075595", "Payment Date": "2020-04-15", "Payment Group": "90", "Payment Method": "02", "": ""}
我的生产者代码如下所示:

进口boto3 导入json 导入csv 从日期时间导入日期时间 导入日历 导入时间 随机输入 读取CSV并另存为json文件 csvFilePath=062019.csv jsonFilePath=output.json 数据=[] 打开csvFilePath作为csvFile时: csvReader=csv.dictReadercsv文件 使用openjsonFilePath,w作为jsonfile: 对于csvReader中的csvRow: jsonfile.writejson.dumpscsvRow+\n 打印数据 将数据放入运动学 my_stream_name='ApacityTeamtStorderstream' 动情\客户=boto3.客户'动情',地区\名称='us-east-1' 打开'output.json','r'作为文件: 对于文件中的行: put\u response=kinesis\u client.put\u记录 StreamName=我的\u流\u名称, 数据=行, 分区键=strrandom.randrange100 打印输出响应 消费者代码如下:

进口boto3 导入json 从日期时间导入日期时间 导入时间 my_stream_name='ApacityTeamtStorderstream' 动情\客户=boto3.客户'动情',地区\名称='us-east-1' response=kinesis\u client.description\u streamname=my\u stream\u name my_shard_id=响应['StreamDescription']['shard'][0]['ShardId'] shard\u iterator=kinisis\u client.get\u shard\u iterator StreamName=我的\u流\u名称, ShardId=my_shard_id, ShardIteratorType='LATEST' my_shard_迭代器=shard_迭代器['ShardIterator'] record\u response=kinesis\u client.get\u recordsShardIterator=my\u shard\u iterator,Limit=2 打印记录\u响应 记录_响应中的“NextSharedIterator”时: record_response=kinesis_client.get_recordsShardIterator=record_response['NextShardIterator',Limit=2 if record_响应['Records']: 打印记录\u响应 但是我得到了一张唱片的结果。有人能帮我吗

需要使用PUT记录吗 现在需要逐行获取生产者数据,分区键用作PartitionKey=strrandom.randrange100 当我运行consumer时,我应该将输出作为所有记录。
我已收到@john Rotenstein的帮助,非常感谢,请帮助我获得所需结果的确切方式。

您的代码需要如下所示:

进口boto3 导入json 随机输入 my_stream_name='ApacityTeamtStorderstream' 动情\客户=boto3.客户'动情',地区\名称='us-east-1' 打开'foo.json','r'作为文件: 对于文件中的行: put\u response=kinesis\u client.put\u记录 StreamName=我的\u流\u名称, 数据=行, 分区键=strrandom.randrange100 如果不希望将整行存储在Kinesis中,则需要提取与问题中的代码类似的所需记录


请注意,我在PartitionKey中输入了一个随机数。如果不需要以特定方式使用记录,则这是常见的做法。但是,如果给定字段的记录需要由同一使用者使用,则将该字段放在PartitionKey中。如果没有意义,请参阅:

应用程序在哪里获取数据?或者那部分工作正常,而你只是想让它工作起来?目前是否产生了任何错误?这是你写的代码吗?如果是,你能解释一下while部分吗?它似乎在做一个发送相同数据的无限循环。我使用代码进行测试,因为我对kinesis非常陌生,想检查“while”是如何工作的。但是现在我需要帮助来阅读上面的json文件以发布到kinesis。有什么帮助吗?JSON文件在哪里?它只是磁盘上的一个文本文件吗?如果是这样的话,您的第一步将是编写一些打开文件的代码,然后在文件中的每一行循环。从简单地将行打印到屏幕开始。一旦你有工作,添加你的put_记录代码。如果您有问题,请随意编辑您的问题,以显示更新的代码,并让我们知道您遇到了什么问题。Json文件在我的办公桌上…让我尝试您建议的方式,并通过结果让您知道我编写了一个类似以下代码data={}abc=openoutput.Json,“r”test_file=json.loadabc for test_file中的测试:printtest printdatai运行该命令,但收到如下错误消息:发生异常:ParamValidationError参数验证失败:输入中缺少必需参数:记录输入中的未知参数:数据中的参数,必须是:记录之一,input:PartitionKey中的StreamName未知参数必须是:Records,StreamName中的一个。是否确实使用上述代码?听起来您使用的是put_记录,而不是put_记录。哦,PartitionKey需要是一个字符串,所以我在.T上面做了一个小的更新
汉克斯·约翰。我能看到它在跑。但显示空列表。[]{'ShardId':'ShardId-000000000000','SequenceNumber':'4960311605855234158516109786525243807500873773403138','ResponseMetadata':{'RequestId':'dc173846-6fc2-a0ed-8b7d-9bdafb9cc987','HTTPStatusCode':200,'HTTPHeaders':{'x-amzn-requestid':'dc173846-6fc2-a0ed-8b7d-9bdafb9cc987','x-amz-id-2':'Y3YX5VH9JQCPT5YZA0EF7XDDI9XNTF8CSCMDSMTSM19K/wkJL9w7DXt/xcG35N+WLWXAJY5YAGDIH5UTZAKPRRCBIUM3LA6P','date','date','Mon,June 2020 12:17:32','content type':'application/x-amz-json-1.1.1','content-length','110}'printput_响应来自您的原始代码。我已经删除了它。记录应该在Kinesis中,所以您的下一个任务是让一个进程使用Kinesis中的记录。谢谢John,我在运行consumer文件时得到了结果。但是在producer文件中,我使用了put record而不是“records”,那么如何更改它呢?当我死记硬背记录,我犯了错误。