打开一个存储在hdfs中的文件在vi中进行编辑

bprjcwpo  于 2021-06-02  发布在  Hadoop
关注(0)|答案(5)|浏览(343)

我想用vi直接在hdfs中编辑一个文本文件,而不必将它复制到本地,编辑它,然后从本地复制回来。这可能吗?
编辑:这在cloudera的色调ui中曾经是可能的,但现在已经不是这样了。

3mpgtkmj

3mpgtkmj1#

hdfs中的文件不能直接编辑。即使您不能替换hdfs中的文件。只有这样才能删除文件并用新文件更新。
在本地编辑文件并在hdfs中再次复制。如果你想保持相同的名字,别忘了删除旧文件。

xriantvc

xriantvc2#

您可以尝试几个选项,允许您将hdfs装载到本地计算机,然后您可以使用本地系统命令,如cp、rm、cat、mv、mkdir、rmdir、more等,但它们都不支持随机写入操作,而是支持追加操作。
nfs网关
hadoop保险丝
nfs网关使用nfs v3并支持附加到文件,但无法执行随机写入操作。
关于你对hue的评论,可能hue正在将文件下载到本地缓冲区,在编辑之后,它可能正在替换hdfs中的原始文件。

e4eetjau

e4eetjau3#

这里的其他答案是正确的,您不能在hdfs中编辑文件,因为它不是与posix兼容的文件系统。只允许附加。
尽管最近我不得不在一个hdfs文件中修复一个头文件,这是我想到的最好办法。。

sc.textFile(orig_file).map(fix_header).coalesce(1).saveAsTextFile(orig_file +'_fixed')

这是一个spark(pyspark)代码。注意coalesce(1),所以作业不是。。并行但好处是您只得到一个输出文件。所以,只需将文件从“orig\u file+'\u fixed'”目录中移动/重命名即可覆盖原始文件。
另外,您可以省略.coalesce(1)部分,转换将并行运行(假设是大文件/多个拆分),速度会快得多,但是您必须将输出hdfs文件合并到一个文件中。
pps。”管道中的map“call”通过“fix\u header”函数(为清晰起见,此处未显示)修复报头。

3vpjnl9f

3vpjnl9f4#

可以使用hadoopfs-put-f中的-f选项替换hdfs中的文件这将消除删除然后复制的需要。

cqoc49vn

cqoc49vn5#

一种简单的方法是从hdfs和复制到hdfs,并在本地进行编辑(参见这里)

hvim <filename>

hvim源代码

hadoop fs -text $1>hvim.txt
vim hvim.txt
hadoop fs -rm -skipTrash $1
hadoop fs -copyFromLocal hvim.txt $1
rm hvim.txt

相关问题