【发布时间】:2022-01-26 05:21:48
【问题描述】:
所以我有 2 个脚本: 用于将文件上传到 hdfs 的 script1 script2 将访问该文件夹并每隔 n 秒读取一次文件
我的上传脚本是这样的
from hdfs import InsecureClient
from requests import Session
from requests.auth import HTTPBasicAuth
session = Session()
session.auth = HTTPBasicAuth('hadoop', 'password')
client_hdfs = InsecureClient('http://hadoop.domain.com:50070', user='hadoop', session=session)
client_hdfs.upload(hdfsPath,filePath,overwrite=True)
当我读到https://martin.atlassian.net/wiki/spaces/lestermartin/blog/2019/03/21/1172373509/are+partially-written+hdfs+files+accessible+not+exactly+but+much+more+yes+than+I+previously+thought 或在stackoverflow中Accessing a file that is being written。
似乎当我使用 hadoop dfs -put 命令(或 -copyFromLocal 或 -cp)上传时,如果文件尚未完成,它将创建 [文件名]。正在复制。但在 python 脚本中,它似乎会创建具有相同名称的文件,但大小会随着时间的推移而增加,直到它完成(我们可以在它完成之前下载它并得到损坏的文件)。
我想问有没有办法使用python上传文件,以便我们知道文件是否已完成上传。
实际上我还有另一个解决方法可以将它们上传到临时文件夹并在完成后将它们移动到正确的文件夹(我仍在尝试这样做),但如果有其他想法将不胜感激
【问题讨论】:
标签: python hadoop file-upload hdfs