Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用spark/scala追加/连接两个文件_Scala_Apache Spark_Hdfs - Fatal编程技术网

使用spark/scala追加/连接两个文件

使用spark/scala追加/连接两个文件,scala,apache-spark,hdfs,Scala,Apache Spark,Hdfs,我有多个文件存储在HDFS中,我需要使用spark将它们合并到一个文件中。但是,由于此操作经常(每小时)执行。我需要将这些多个文件附加到源文件中 我发现有一个FileUtil提供了“copymerge”函数。但它不允许附加两个文件 感谢您的帮助您可以使用两种方法来完成此操作: sc.textFile("path/source", "path/file1", "path/file2").coalesce(1).saveAsTextFile("path/newSource") 或者正如@Push

我有多个文件存储在HDFS中,我需要使用spark将它们合并到一个文件中。但是,由于此操作经常(每小时)执行。我需要将这些多个文件附加到源文件中

我发现有一个FileUtil提供了“copymerge”函数。但它不允许附加两个文件


感谢您的帮助

您可以使用两种方法来完成此操作:

 sc.textFile("path/source", "path/file1", "path/file2").coalesce(1).saveAsTextFile("path/newSource")
或者正如@Pushkr所提议的那样

 new UnionRDD(sc, Seq(sc.textFile("path/source"), sc.textFile("path/file1"),..)).coalesce(1).saveAsTextFile("path/newSource")

如果您不想创建新源并每小时覆盖同一个源,您可以使用带有保存模式覆盖()的dataframe

简单
union
unionAll
如何?谢谢您的回答。这些方法是否允许合并以下路径中的文件:folder1/***。知道我不知道路径**我使用失败。我有以下路径:folder1/UnknownFolder2/unknownFolder3/knownFolder4/files。我想通过以下路径合并文件:folder1/***/**/knownfolder 4/f.csv。您能告诉我如何正确使用*和这个sc.text文件(“folder1/*/*/knownfolder 4/f.csv”)谢谢您的回复。它与“/”一起工作。然而,我仍然有一个问题。我需要将数据保存为csv,而不是foler或part-0000.gz。在覆盖的讨论中,他们删除了目标内容,以便能够在之后重新保存。就我而言,我不能这样做,因为每小时的内容都是新的。简言之,我唯一的阻塞点是追加内容。如果文件之间有断线,这仍然有效吗?也就是说,file1以半行结束,没有换行符,file2以file1最后一行的其余部分开始?