如何使用dataproc上的getmerge处理转储到google存储桶的部分文件。如果我试试这个 hadoop fs -getmerge gs://my-bucket/temp/part-* gs://my-bucket/temp_merged
我出错了 getmerge: /temp_merged (Permission denied)
对我来说很管用 hadoop fs -getmerge gs://my-bucket/temp/part-* temp_merged
当然,这会将合并的文件写入集群计算机,而不是gs。
1条答案
按热度按时间f3temu5u1#
根据fsshell文档
getmerge
命令基本上将目标路径视为“本地”路径(因此在gs://my-bucket/temp_merged
它忽略了“scheme”和“authority”组件,试图直接写入本地文件系统路径/temp_meged
; 这并非特定于地面军事系统连接器;如果你尝试,你也会看到同样的结果hadoop fs -getmerge gs://my-bucket/temp/part-* hdfs:///temp_merged
,更糟的是,如果你尝试hadoop fs -getmerge gs://my-bucket/temp/part-* hdfs:///tmp/temp_merged
,您可能认为它成功了,而实际上文件没有出现在hdfs:///tmp/temp_merged
,但却出现在本地文件系统下,file:///tmp/temp_merged
.相反,您可以使用管道stdout/stdin来实现它;不幸的是
-getmerge
他跟我玩得不好/dev/stdout
由于的权限和用法.crc
但使用中的功能可以实现相同的效果hadoop fs -put
支持从stdin读取: