post - 将压缩的文本文件发布到 apache nifi
问题描述
必须通过 HTTP 或 HTTPS 将 zip 格式的压缩文本文件发送到 apache nifi。在那里它必须被解压缩并存储在 HDFS 上。迄今为止的努力是徒劳的。
测试文件是一个压缩的文本文件blabla.txt
Python 帖子
import requests
requests.post('http://example.com/endpoint',
files={'files': open('blabla.zip', 'rb')})
尼菲工艺
我最好的尝试是使用以下 Nifi 处理器:
- 处理HttpRequest
- flowfile的RouteOnAttribute(端点/端点过滤器)内容是:
--e313bde14db343d99c74fbb129fba9ac 内容配置:表单数据;名称="文件"; 文件名="blabla.zip"
PKh|�L��G blabla.txtK,NAB�)�&PKh|�L��G $ blabla.txt f�-.����<,����<,�PK\3
提取文本
文件=文件
^Content\-Disposition.*?(^PK.*)$.*?^\-\-.*?\-\-$
名=^Content\-Disposition\: form\-data\; name\=\"files\"\; filename\=\"(.*?)\"
ReplaceText:将 .* 替换为 $(file) 以将流文件的全部内容替换为file。流文件内容现在是:
PKh|�L��G blabla.txtK,NAB�)�&PKh|�L��G $ blabla.txt f�-.����<,����<,�PK\3
UnpackContent引发以下错误:
09:43:04 CEST - 所有节点 - 错误 UnpackContent[id=d1973e21-d051-1530-ffff-fffff1485298] 无法解压 StandardFlowFileRecord[uuid=2d63555b-ff0f-4383-99d1-496df13c7a00,claim=StandardContentClaim [resourceClaim=Stand[ id=1530878768408-1, container=default, section=1], offset=24932, length=201],offset=0,name=1054961836825343,size=201] 由于 org.apache.nifi.processor.exception.ProcessException: UnpackContent [id=d1973e21-d051-1530-ffff-fffff1485298] 引发的 IOException:java.util.zip.ZipException:设置的代码长度无效;路由失败:从 UnpackContent [id=d1973e21-d051-1530-ffff-fffff1485298] 引发的 IOException:java.util.zip.ZipException:设置的代码长度无效
没有提取/替换
- 处理HttpRequest
- flowfile的RouteOnAttribute(端点/端点过滤器)内容是:
--e313bde14db343d99c74fbb129fba9ac 内容配置:表单数据;名称="文件"; 文件名="blabla.zip"
PKh|�L��G blabla.txtK,NAB�)�&PKh|�L��G $ blabla.txt f�-.����<,����<,�PK\3
- UnpackContent产生以下错误:
09:04:16 CEST - 所有节点 - 错误 UnpackContent[id=4ffa337f-0a73-197a-9965-c1334338ebd8] 无法解压 StandardFlowFileRecord[uuid=93cad6cf-e19b-4d0b-9d2d-54e38b9b8bed,claim=StandardContentClaim [resourceClaim=StandardResourceClaim[ id=1530878768408-1, container=default, section=1], offset=21130, length=312],offset=0,name=1052634174590117,size=312] 由于 org.apache.nifi.processor.exception.ProcessException: UnpackContent [id=4ffa337f-0a73-197a-9965-c1334338ebd8] 引发的 IOException:java.util.zip.ZipException:意外记录签名:0X65632D2D;路由失败:从 UnpackContent [id=4ffa337f-0a73-197a-9965-c1334338ebd8] 引发的 IOException:java.util.zip.ZipException:意外的记录签名:0X65632D2D
解决方案
您是否尝试替换 ZIP 文件本身中的文本?如果您要修改内容,我认为 UnpackContent 处理器应该在 Extract/ReplaceText 之前。
推荐阅读
- java - 以编程方式选择指定项目时如何更改 RecyclerView 中项目的属性?
- python - 使用 superclass.__init()__ 而不是 superclass() 调用超类构造函数的原因
- c - 如何在 C 中管理字符串的动态数组
- python - ValueError:使用输入暗淡 1 的索引超出范围;输入对于 strided_slice 只有 1 个暗淡
- javascript - JavaScript 和 css:突出显示具有相同背景的多个单词
- python - 如何将两个高斯分布相乘?
- jquery - 滚动浏览不同大小的图像
- cmake - 在生成文件期间未一致使用 CMakeCache.txt 中的值
- c - 自动转换 C 代码
- ios - 以 20 像素左右为按钮设置动画