ftp提取文件到hdfs
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ftp提取文件到hdfs相关的知识,希望对你有一定的参考价值。
参考技术A 实际场景中,我们经常需要通过ftp协议把不同数据源的文件统一汇入到hdfs数据中心,经过实践,有以下的三种方法,分别列出其优缺点及适用场景。1、 先把文件ftp到本地,然后用命令hdfsdfs –put [local_path] [hdfs_path]
优点:文件在本地可以进行本地化的一系列操作后,再放回hdfs中
缺点:文件传输经过两层,并且从源服务器到本地提取是单机串行,比较消耗时间。
适用于文件放入hfds前需要预处理的情景,如:.zip压缩文件不被hadoop支持的,所以我们可以先在本地转压缩方式然后再放入hdfs中。
2、 hdfs dfs –cp [ftp://username:password@hostname/ftp_path] [hdfs:///hdfs_path]
优点:简单,提取速度快
缺点:CLI执行不会显示进度
适用场景:适用于小文件的ftp拷贝。
3、 hadoop distcp [ftp://username:password@hostname/ftp_path] [hdfs:///hdfs_path]
优点:简单,能显示拷贝进度,并且是分布式提取的,数据比较快。
缺点: 如果拷贝的文件是不断有其他程序写入,会报错,因为该命令最后要对数据进行checksum导致两边不一致,当然,该命令是主要用于集群间拷贝的。
适用场景:大量文件或大文件的拷贝。
提取 HDFS 文件夹或文件详细信息
【中文标题】提取 HDFS 文件夹或文件详细信息【英文标题】:Extract HDFS folder or file details 【发布时间】:2019-12-16 10:16:10 【问题描述】:为了使用 hive 在任何时间点查找 HDFS
目录中存在的文件数,我创建了一个 hive 外部表。谁能帮我提取HDFS
中存在的目录的文件详细信息,因为INPUT__FILE__NAME
或hdfs dfs -stat
不符合我的目的,我希望将所有-ls
放入csv
文件中。
【问题讨论】:
【参考方案1】:不建议使用 ls 的输出,它不是为此而设计的。话虽如此,这不是正常的 ls ,所以也许别无选择。
你可以像这样把它的输出放到一个文件中:
hadoop fs -ls /path > output.txt
【讨论】:
【参考方案2】:还可以使用hdfs在所有数据库中查找表:
hive数据库的路径是:
/apps/hive/仓库/ 所以,通过使用 hdfs :
hdfs dfs -find /apps/hive/warehouse/ -name t*
或
hadoop fs -ls /路径
【讨论】:
以上是关于ftp提取文件到hdfs的主要内容,如果未能解决你的问题,请参考以下文章