增量编码器:在Scala中使用Java库

增量编码器:在Scala中使用Java库,java,scala,delta,Java,Scala,Delta,我必须比较使用基于Spark的大数据分析数据集(文本文件),这些数据集非常相似(>98%),但大小非常大。在做了一些研究之后,我发现最有效的方法是使用delta编码器。有了这个,我可以有一个参考文本,并以增量的形式存储其他文本。然而,我使用的Scala不支持增量编码器,而且我对Java一点也不熟悉。但由于Scala可以与Java互操作,我知道可以在Scala中使用Java库 我发现有希望的实现是,并且。再搜索一下,我找到了最有趣的图书馆。该链接还提供了一些基准测试,在这些基准测试中,它的性能似乎

我必须比较使用基于Spark的大数据分析数据集(文本文件),这些数据集非常相似(>98%),但大小非常大。在做了一些研究之后,我发现最有效的方法是使用delta编码器。有了这个,我可以有一个参考文本,并以增量的形式存储其他文本。然而,我使用的Scala不支持增量编码器,而且我对Java一点也不熟悉。但由于Scala可以与Java互操作,我知道可以在Scala中使用Java库

我发现有希望的实现是,并且。再搜索一下,我找到了最有趣的图书馆。该链接还提供了一些基准测试,在这些基准测试中,它的性能似乎非常好,代码可以自由使用,并且看起来很轻

在这一点上,我坚持在Scala中使用这个库(通过sbt)。我将非常感谢您提供任何建议或参考,以克服这个障碍,无论是针对这个问题(delata编码器)、库还是在Scala中使用Java API。具体而言,我的问题是:

  • 是否有可以直接使用的增量编码器Scala库?(若否)

  • 我是否可以将类文件/notzed.dez.jar放在项目中,让sbt在Scala代码中提供API


  • 我有点被困在这个泥潭里了,如果有任何出路都将不胜感激。

    有几个细节需要考虑。在Scala中直接使用Java库是没有问题的,无论是作为sbt中的依赖项使用,还是作为非托管依赖项使用:“库中的依赖项位于所有类路径上(用于编译、测试、运行和控制台)”。您可以使用代码和依赖项创建胖jar,并使用Spark Submit分发它

    这里的要点是在Spark中使用这些框架。要利用Spark,您需要将文件分割成块,以便在集群中为一个文件分发算法。或者,如果您的文件被压缩,并且每个文件都在一个hdfs分区中,则需要调整hdfs块的大小,等等


    您可以使用C模块,将它们包含在项目中,并通过JNI调用它们,因为深度学习框架等框架使用本机线性代数函数等。因此,本质上,关于如何在Spark中实现这些增量算法,有很多需要讨论。

    谢谢。我将研究所建议的方法。