Delta 编码器:在 Scala 中使用 Java 库
Delta encoders: Using Java library in Scala
我不得不使用基于Spark的大数据分析数据集(文本文件)进行比较,这些数据集非常相似(> 98%)但尺寸非常大。在做了一些研究之后,我发现最有效的方法可能是使用 delta 编码器。有了这个,我可以有一个参考文本并将其他文本存储为增量增量。但是,我使用的 Scala 不支持增量编码器,而且我一点也不熟悉 Java。但由于 Scala 可与 Java 互操作,我知道可以在 Scala 中使用 Java 库。
我发现有前途的实现是 xdelta, vcdiff-java and bsdiff. With a bit more searching, I found the most interesting library, dez。 link 还提供了基准测试,其中它似乎表现得非常好,并且代码可以免费使用并且看起来很轻量级。
此时,我坚持在 Scala 中使用这个库(通过 sbt)。我将不胜感激任何解决此障碍的建议或参考,无论是针对此问题(delata 编码器)、库还是在 Scala 中使用 Java API 的一般情况。具体来说,我的问题是:
是否有我可以直接使用的增量编码器的 Scala 库? (如果没有)
是否可以在项目中放置 class files/notzed.dez.jar 并让 sbt 在 Scala 中提供 APIs代码?
我有点陷入这个泥潭,任何出路将不胜感激。
有几个细节需要考虑。在 Scala 中直接使用 Java 库没有问题,无论是在 sbt 中用作依赖项还是用作非托管依赖项 https://www.scala-sbt.org/1.x/docs/Library-Dependencies.html: "Dependencies in lib go on all the classpaths (for compile, test, run, and console)". You can create a fat jar with your code and dependencies with https://github.com/sbt/sbt-native-packager 并使用 Spark Submit 分发。
这里的重点是在Spark中使用这些框架。要利用 Spark,您需要将文件分成块,以便为一个文件在整个集群中分发算法。或者,如果您的文件被压缩并且您将每个文件都放在一个 hdfs 分区中,您将需要调整 hdfs 块的大小等...
您可以使用 C 模块并将它们包含在您的项目中,并通过 JNI 调用它们,因为深度学习框架等框架使用本机线性代数函数等。因此,从本质上讲,有很多关于如何进行讨论在 Spark 中实现这些增量算法。
我不得不使用基于Spark的大数据分析数据集(文本文件)进行比较,这些数据集非常相似(> 98%)但尺寸非常大。在做了一些研究之后,我发现最有效的方法可能是使用 delta 编码器。有了这个,我可以有一个参考文本并将其他文本存储为增量增量。但是,我使用的 Scala 不支持增量编码器,而且我一点也不熟悉 Java。但由于 Scala 可与 Java 互操作,我知道可以在 Scala 中使用 Java 库。
我发现有前途的实现是 xdelta, vcdiff-java and bsdiff. With a bit more searching, I found the most interesting library, dez。 link 还提供了基准测试,其中它似乎表现得非常好,并且代码可以免费使用并且看起来很轻量级。
此时,我坚持在 Scala 中使用这个库(通过 sbt)。我将不胜感激任何解决此障碍的建议或参考,无论是针对此问题(delata 编码器)、库还是在 Scala 中使用 Java API 的一般情况。具体来说,我的问题是:
是否有我可以直接使用的增量编码器的 Scala 库? (如果没有)
是否可以在项目中放置 class files/notzed.dez.jar 并让 sbt 在 Scala 中提供 APIs代码?
我有点陷入这个泥潭,任何出路将不胜感激。
有几个细节需要考虑。在 Scala 中直接使用 Java 库没有问题,无论是在 sbt 中用作依赖项还是用作非托管依赖项 https://www.scala-sbt.org/1.x/docs/Library-Dependencies.html: "Dependencies in lib go on all the classpaths (for compile, test, run, and console)". You can create a fat jar with your code and dependencies with https://github.com/sbt/sbt-native-packager 并使用 Spark Submit 分发。
这里的重点是在Spark中使用这些框架。要利用 Spark,您需要将文件分成块,以便为一个文件在整个集群中分发算法。或者,如果您的文件被压缩并且您将每个文件都放在一个 hdfs 分区中,您将需要调整 hdfs 块的大小等...
您可以使用 C 模块并将它们包含在您的项目中,并通过 JNI 调用它们,因为深度学习框架等框架使用本机线性代数函数等。因此,从本质上讲,有很多关于如何进行讨论在 Spark 中实现这些增量算法。