我需要String
在数据结构中存储2到1,500万个帐户(长度为15),以便查找和检查唯一性.最初我计划将它们存储在a中HashSet
,但是我怀疑由于散列冲突,查找的速度会很慢,并且最终会比TreeMap慢(使用二进制搜索).
不需要对数据进行排序.我正在使用Java 7.我有64G系统,48G专用于此应用程序.
这个问题不是HashSet和TreeSet性能测试的重复,因为这个问题是关于向a添加元素Set
的性能,这个问题是关于检查现有的重复值的性能.Set
我已经从HBase表(PHOENIX)创建了一个DataFrame,它有5亿行.在DataFrame中,我创建了一个JavaBean的RDD,并使用它来连接文件中的数据.
Map<String, String> phoenixInfoMap = new HashMap<String, String>();
phoenixInfoMap.put("table", tableName);
phoenixInfoMap.put("zkUrl", zkURL);
DataFrame df = sqlContext.read().format("org.apache.phoenix.spark").options(phoenixInfoMap).load();
JavaRDD<Row> tableRows = df.toJavaRDD();
JavaPairRDD<String, AccountModel> dbData = tableRows.mapToPair(
new PairFunction<Row, String, String>()
{
@Override
public Tuple2<String, String> call(Row row) throws Exception
{
return new Tuple2<String, String>(row.getAs("ID"), row.getAs("NAME"));
}
});
Run Code Online (Sandbox Code Playgroud)
现在我的问题 - 让我们说该文件有2个与该表匹配的唯一百万条目.整个表是作为RDD加载到内存中还是只有表中匹配的200万条记录将作为RDD加载到内存中?