我正在运行一个spark应用程序,它从几个hive表(IP地址)读取数据,并将数据集中的每个元素(IP地址)与来自其他数据集的所有其他元素(IP地址)进行比较.最终结果将是这样的:
+---------------+--------+---------------+---------------+---------+----------+--------+----------+
| ip_address|dataset1|dataset2 |dataset3 |dataset4 |dataset5 |dataset6| date|
+---------------+--------+---------------+---------------+---------+----------+--------+----------+
| xx.xx.xx.xx.xx| 1 | 1| 0| 0| 0| 0 |2017-11-06|
| xx.xx.xx.xx.xx| 0 | 0| 1| 0| 0| 1 |2017-11-06|
| xx.xx.xx.xx.xx| 1 | 0| 0| 0| 0| 1 |2017-11-06|
| xx.xx.xx.xx.xx| 0 | 0| 1| 0| 0| 1 |2017-11-06|
| xx.xx.xx.xx.xx| 1 | 1| 0| 1| 0| 0 |2017-11-06|
---------------------------------------------------------------------------------------------------
Run Code Online (Sandbox Code Playgroud)
为了进行比较,我将语句的dataframes结果转换hiveContext.sql("query")为Fastutil对象.像这样:
val df= hiveContext.sql("query")
val dfBuffer = new it.unimi.dsi.fastutil.objects.ObjectArrayList[String](df.map(r => r(0).toString).collect())
Run Code Online (Sandbox Code Playgroud)
然后,我使用一个iterator …
灵感来自另一个问题.
在fastutil库中有IntArrayList一个类,它有一个带有以下Java签名的方法:
public void push(Integer o)
Run Code Online (Sandbox Code Playgroud)
来自Kotlin,它被视为
push(o: Int)
Run Code Online (Sandbox Code Playgroud)
是否有特定原因Int而不是平台类型Int!?
我预计它push(o: Int!)至少是因为在项目中使用Kotlin源在Java源代码中定义的相同签名的方法具有Int!从Kotlin看到的参数类型(甚至在不同的模块中定义,甚至从该模块的jar中导入!).
此外,所描述的行为导致push(Integer o)与push(int o)具有Int参数合法的(在同一类中)冲突- 它们都被视为push(o: Int).如果有Int!对Integer,就没有冲突(我也试过在我的代码来定义这个对方法-仍然是如我所料,有Int!).
Kotlin版本是1.0.2.
Gradle依赖fastutil:
compile group: 'it.unimi.dsi', name: 'fastutil', version: '7.0.12'
Run Code Online (Sandbox Code Playgroud) 如何将java.util.Map转换为fastutil.BigList?
BigList<Employee> empList= empMap.values().stream().collect(Collectors.toList());
我正在寻找资源来了解 Java 数据类型是如何在内部实现的,以及 Fastutil 和 Eclipse Collections 等库如何提供更快的实现。我厌倦了浏览 Github 上的代码库(分别为https://github.com/vigna/fastutil和https://github.com/eclipse/eclipse-collections),但我只知道使用了代码生成器。
但是使用了哪些代码生成器?它们是如何使用的?为什么生成的代码性能更好?如果它们性能更好,为什么这些不是 Java 中的默认实现?
我正在寻找涵盖此主题的任何类型的资源/阅读列表。Youtube 和 Google 没有太大帮助。
谢谢
fastutil ×4
java ×3
collections ×2
apache-spark ×1
java-8 ×1
kotlin ×1
parameters ×1
performance ×1
scala ×1