Hadoop中 -put命令的出现两个一样的目录

本文详细介绍了在HDFS中上传文件的正确方式,包括如何处理空目录和已存在文件夹的情况,以及如何使用-f参数实现文件的覆盖写入。通过实际案例解析,帮助读者掌握HDFS文件操作的最佳实践。

直接贴图
遇到的问题
在这里插入图片描述
解决:
hdfs dfs -put /xxx/xx.csv /xxx

原因:
如果是空目录,或者说还没用此文件夹在hdfs上面,那么先创建文件夹后,在put数据就不要加 -f ,如果想要覆盖写入(强行覆盖之前的文件),此时你已经之前上传过了文件,并且有文件夹了,所以你可以加-f

### 如何确定 `hadoop fs -copyFromLocal` 和 `-put` 命令中的本地文件路径及 HDFS 存储路径 在使用 Hadoop命令操作时,理解本地文件系统路径和 HDFS 路径是非常重要的。以下是关于如何确定这些路径的具体方法: #### 1. **本地文件路径** 本地文件路径是指存储在操作系统本地磁盘上的文件位置。通常情况下,该路径可以是绝对路径或相对路径。 - 绝对路径:从根目录 `/` 开始指定完整的路径。例如,在 Linux 中可能是 `/home/user/example.txt` 或者在 Windows 中可能是 `C:\Users\User\example.txt`。 - 相对路径:相对于当前工作目录的路径。可以通过运行 `pwd`(Linux/MacOS)或者 `cd`(Windows)来确认当前的工作目录[^2]。 如果未提供完整路径,则默认会基于执行命令所在的目录解析文件的位置。 #### 2. **HDFS 文件路径** HDFS 是分布式文件系统的实现方式之一,其路径结构类似于 Unix/Linux 风格的文件系统。HDFS 上的路径也分为两种形式: - **绝对路径**:总是以斜杠 `/` 开头表示根目录下的某个子目录或文件。比如 `/user/hadoop/input/data.txt` 表示位于 HDFS目录下 `/user/hadoop/input/` 下的一个名为 `data.txt` 的文件。 - **用户特定路径**:如果省略了开头的 `/`,则会被解释为用户的家目录下的某一部分。例如,对于用户名为 `hadoop` 的用户来说,路径 `input/data.txt` 实际上指的是 `/user/hadoop/input/data.txt`[^3]。 #### 3. **具体命令分析** ##### a) `hadoop fs -copyFromLocal` 此命令用于将本地文件复制到 HDFS。语法如下: ```bash hadoop fs -copyFromLocal <localsrc> ... <dst> ``` - `<localsrc>` 参数指定了源文件的本地路径。它可以是一个具体的文件名或者是多个文件组成的列表。 - `<dst>` 参数定义目标地址即 HDFS 上的目标路径。如果没有特别指出最后部分作为新创建文件的名字,默认会保留原有名称并放置于给定目录之下[^1]。 例如: ```bash hadoop fs -copyFromLocal /path/to/local/file.txt /destination/in/HDFS/ ``` 这假设 `/path/to/local/file.txt` 是一个有效的本地文件全路径;而 `/destination/in/HDFS/` 应当已经存在并且是你希望存放副本的地方。 ##### b) `hadoop fs -put` 功能几乎相同于上述提到过的 `-copyFromLocal` 方法,区别在于它支持递归地上传整个目录以及处理标准输入流的情况。基本用法相似: ```bash hadoop fs -put <localsrc> ... <dst> ``` 同样需要注意的是,这的参数含义保持一致——前者代表来自本机的数据资源定位符后者则是远程仓库内的预期接收点位信息。 通过以上描述可以看出两者主要差异体现在性能优化方面而非功能性改变上因此可以根据实际需求任选其中之一完成相应任务即可满足日常开发运维工作中遇到的各种场景应用需求。 ```python # 示例 Python 脚本展示如何调用 hadoop fs 命令 import os os.system('hadoop fs -copyFromLocal ./localfile.txt /hdfs/path/') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值