【发布时间】:2018-06-21 22:51:46
【问题描述】:
我有两条路径,一条用于文件,一条用于文件夹。我想将文件移动到 HDFS 上的那个文件夹中。我怎么能在 Scala 中做到这一点?我也在用 Spark
如果相同的代码也适用于 Windows 路径,就像在 HDFS 上读取/写入文件一样,但不是必需的。
我尝试了以下方法:
val fs = FileSystem.get(sc.hadoopConfiguration)
fs.moveFromLocalFile(something, something2)
我收到以下错误:
线程“主”java.lang.IllegalArgumentException 中的异常:错误 FS:hdfs:/user/o/datasets/data.txt,预期:file:///
moveToLocalFile() 也是如此,因为它们旨在在文件系统之间而不是在文件系统内传输文件。我也尝试过fs.rename(),但这根本没有做任何事情(没有错误或任何事情)。
我基本上在一个目录中创建文件(使用流写入它们),一旦完成,他们需要移动到另一个目录。这个不同的目录由 Spark 流监控,当 Spark 流尝试处理未完成的文件时我遇到了一些问题
【问题讨论】:
-
Spark 流尝试处理未完成的文件。您需要明确忽略以句点或下划线开头的任何文件
-
当我创建文件时,它们的临时形式仍然具有相同的文件名,但它们的大小为 0(字节),直到它们完成,然后它们具有最终大小和相同的名称。跨度>
-
是的,除非您忽略它们,否则 Spark Streaming 会引发错误
-
如何检测程序中的大小?由于文件名没有改变
-
问题没看懂,不过好像和原帖无关
标签: scala hadoop apache-spark hdfs