在火花分析之前从 FTP 读取大文本文件

Posted

技术标签:

【中文标题】在火花分析之前从 FTP 读取大文本文件【英文标题】:Reading large text file from FTP before spark analysis 【发布时间】:2017-12-24 12:06:10 【问题描述】:

我在我的系统中以独立模式(希望将来分发)运行 spark,以分析大于 5 GB 的超大文件。首先我需要将此文件从 FTP 复制到我的本地 e.g c:\spark\analysis\bigfile.txt 然后我将能够使用 spark 加载文件进行分析。

我的问题是如何在不耗尽内存的情况下有效地复制这么大的文件? 有可能在火花中做到吗?我应该使用像 kafka 这样的流媒体库吗?

同样的方式,我需要在完成 spark 分析后将一个大文件写入 ftp 服务器。

【问题讨论】:

Read csv file in Apache Spark from remote location (ftp) 【参考方案1】:

您可以使用简单的 shell 命令,使用 Bluezone 或任何其他连接终端仿真器的边缘节点:

cat bigfile.txt | ssh yourUserName@yourServer 'hdfs dfs -put - /pathTo/hdfs'

虽然会慢一些,但它对我来说适用于 300GB 的文件。

注意:我这样做是因为我的文件位于未安装 Hadoop 的服务器中。如果您的服务器安装了 Hadoop,那么您可以简单地尝试 hdfs dfs -put

【讨论】:

【参考方案2】:

通过标准输入管道:

块引用

wget ftp://user:password@ftpserver/your_file | hadoop fs -put - path_in_hdfs

块引用

单 - 告诉 HDFS put 从标准输入读取。

【讨论】:

以上是关于在火花分析之前从 FTP 读取大文本文件的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swing 中读取和显示大文本文件?

如何提高java读取大文本文件的效率

将文本插入到现有的大文件中

读取大文本文件

C#读取大文本文件

如何在 .NET 中读取大 (1GB) 文本文件?