`
febird
  • 浏览: 254275 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

通过管道向 hadoop put 文件

阅读更多

使用 hadoop file shell 可以方便地向 hdfs put 文件,但是,该 shell 不支持从管道读取数据并放到 hdfs 文件中。它仅支持这样的 put 命令:

cd $HADOOP_HOME
bin/hadoop fs -put localfile $hdfsFile
bin/hadoop fs -put localfiles $hdfsDir

 幸好,主流的 unix (linux,bsd等)都有一个 /dev/fd/ 目录,可以用它实现从管道 put 文件

cd $HADOOP_HOME
if bin/hadoop fs -test -d $hdfsFile
then
    echo "$hdfsFile is a directory" >&2
    exit 1
fi
cat localfileS | bin/hadoop fs -put /dev/fd/0  $hdfsFile
if [[ "0 0" == ${PIPESTATUS[*]} ]]
then
    echo success
else
    bin/hadoop fs -rm $hdfsFile
    echo failed >&2
fi 

其中,使用 PIPESTATUS 检查错误

 

需要注意,使用 /dev/fd/0 put 文件时,hdfsFile 必须事先不存在,并且不能是一个目录,如果hdfsFile实际上是一个目录,那么,put 仍然正确执行,但是,hdfs 中的文件名将是 hdfsFile/0

 

/dev/fd/ 中是进程所有已打开的文件描述符列表,例如 /dev/fd/0 代表标准输入,/dev/fd/1 代表标准输出,/dev/fd/2 代表标准错误输出,等等,打开 /dev/fd/n 相当于调用 dup(n) 。

分享到:
评论

相关推荐

    Hadoop Blueprints

    - **文件管理命令**:HDFS提供了丰富的命令用于管理文件和目录,如`hadoop fs -put`用于上传文件到HDFS,`hadoop fs -get`用于从HDFS下载文件等。 - **NameNode和DataNode**:HDFS由一个NameNode和多个DataNode...

    Hadoop基础面试题(附答案)

    3. **DataNode间数据传输**:客户端将数据写入DataNode,并通过管道传递给其他DataNode。 4. **确认副本完成**:最后一个DataNode通知客户端写入成功。 5. **关闭文件**:客户端通知NameNode关闭文件。 #### 十四、...

    hadoop 部分 shell 脚本

    - `hadoop fs -put`: 将本地文件上传到HDFS。 - `hadoop fs -get`: 从HDFS下载文件到本地。 - `hadoop fs -rm`: 删除HDFS上的文件或目录。 - `hadoop fs -mv`: 在HDFS内部移动文件或目录。 2. **MapReduce操作*...

    hadoop-shell(第四章)-带书签高清pdf文字版

    - Hadoop Shell提供了一种与HDFS(Hadoop Distributed File System)交互的方式,允许用户通过熟悉的Unix/Linux命令行界面执行文件管理和数据处理任务。 - 介绍Hadoop的命令行接口,包括`hadoop fs`命令,它是...

    hadoop命令指南

    `pipes`命令用于创建简单的管道式MapReduce作业,通过本地程序执行Map和Reduce任务。 **命令格式**: ``` hadoop pipes [-version] [-compile <program> ] [-submit <input> <output> ] ``` **参数说明**: - `-...

    hdfs-文件读写测试

    - 使用命令 `hadoop fs -put /home/iperf-2.0.2.tar.gz /test-hzw` 上传文件 `iperf-2.0.2.tar.gz` 至 `/test-hzw`。 3. **监控数据流量:** - 在文件上传过程中,利用桌面云的端口镜像功能监测流入与流出 Client...

    热力管道应力分布式计算系统研究 (1).pdf

    Hadoop是一个开源框架,可以存储和处理大量数据,它由HDFS(Hadoop分布式文件系统)和MapReduce编程模型组成。Spark则是一个快速的大数据处理框架,它基于内存计算,比Hadoop的MapReduce模型要快很多,适合于迭代...

    7、NIFI综合应用场景-将mysql查询出的json数据转换成txt后存储至HDFS中

    如果没有Hive或Hue,也可以通过Hadoop的文件系统接口来查看处理后的数据。以下是实现这一功能的主要步骤: 1. **数据获取**:使用`QueryDatabaseTable`或`ExecuteSQL`处理器从MySQL中提取JSON格式的数据。这些...

    maven-kafka

    Apache Kafka是一个分布式流处理平台,常用于实时数据管道和消息系统。Maven是Java项目管理工具,帮助开发者管理和构建项目,依赖管理和构建生命周期是其核心功能。 【描述】"kafka 最简单的消息生产与消费测试...

    大数据学习路径思维导图.pdf

    - 配置文件(如/etc/***f)中设置binlog_format,以及Flume的配置文件中定义各种Source、Channel和Sink,用于搭建数据流处理的管道。 10. **Flume中数据流的处理** - 数据从Source流入Channel,经过Interceptor...

    Spark-Streaming-Apache-Kafka-Apache-HBase:Spark Streaming示例项目,它从Kafka中提取消息并写入HBase Table

    Apache Kafka 是一个分布式流处理平台,它被广泛用于构建实时数据管道和流应用。在这个场景下,Kafka 担当数据源的角色,生产者将实时数据发布到特定的主题,而 Spark Streaming 作为消费者,从这些主题中消费数据。...

Global site tag (gtag.js) - Google Analytics