Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.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
Scala 如何避免在通过spark接收数据期间创建重复项?_Scala_Apache Spark_Duplicates - Fatal编程技术网

Scala 如何避免在通过spark接收数据期间创建重复项?

Scala 如何避免在通过spark接收数据期间创建重复项?,scala,apache-spark,duplicates,Scala,Apache Spark,Duplicates,我必须每天阅读和存储新到达的文件。 这些文件是简单的csv文件,但问题是,有时新到达的日志文件包含整个以前的日志文件 例如,在这个场景中,我希望保留第一天的整个文件(文件1),并将其保存到拼花地板。 第二天,我只想存储新文件(文件2)中的两行新行 文件1: col1 col2 col3 dayOfProcessing c1 c1 c1 2020-01-01 c1 c1 c1 2020-01-01 c2 c2 c2

我必须每天阅读和存储新到达的文件。 这些文件是简单的csv文件,但问题是,有时新到达的日志文件包含整个以前的日志文件

例如,在这个场景中,我希望保留第一天的整个文件(文件1),并将其保存到拼花地板。 第二天,我只想存储新文件(文件2)中的两行新行

文件1:

col1   col2   col3    dayOfProcessing
c1     c1     c1      2020-01-01
c1     c1     c1      2020-01-01
c2     c2     c2      2020-01-01
c3     c3     c3      2020-01-01
文件2:

col1   col2   col3    dayOfProcessing
c1     c1     c1      2020-01-02
c1     c1     c1      2020-01-02
c2     c2     c2      2020-01-02
c3     c3     c3      2020-01-02
c4     c4     c4      2020-01-02
c5     c5     c5      2020-01-02
预期产出:

col1   col2   col3    dayOfProcessing
c1     c1     c1      2020-01-01
c1     c1     c1      2020-01-01
c2     c2     c2      2020-01-01
c3     c3     c3      2020-01-01
c4     c4     c4      2020-01-02
c5     c5     c5      2020-01-02
是否有任何已经使用过的魔法可以做到这一点,而无需阅读所有已存储的拼花?
为了再次混淆,我们需要存储文件中出现的重复项。(请参见c1行。)

如果文件名在多天之间相同,则可以使用该文件名。否则,请在旧数据和新数据之间使用外部联接以查找新数据,然后仅保存新数据(作为parquest)。如果要使用外部联接,我仍然需要读取所有历史数据:(我在考虑某种检查点。@MorcosMacska无需阅读整个历史,您可以在处理当天进行过滤,若您将拼花地板存储在分区中,则在获取时会对其进行修剪