0 0

java关于大数据建索引和字符串搜索问题5

我现在有一个问题描述:有一个大文件,文件中是很多的fasta的序列,fasta序列就是一个序列名字,然后一个字符串,这个字符串现在限定为4个字符,我们可以认为是DNA序列,现在我需要按照一个特定的长度进行切分,比如说ACGTTACG,按照5来切分,那么就是切分为ACGTT,CGTTA,GTTAC等,然后需要将他索引起来,并存储到硬盘上(必须存储到硬盘上,不论文件大小),然后搜索的部分是,先从硬盘上Load索引,然后针对具体的字符串进行匹配。

我目前使用的数据结构是一个子串索引,就是将切分好的子串进行编码,编码的值就是他在索引中的位置,索引中保存的是他在原有串中的开始位置和原有串的id。但现在遇到的问题是,速度非常慢,尤其是遇到重复率很高的子串的时候,经过测试,大部分时间浪费在IO处理和索引更新上,不知道有没有哪位比较懂java的可以帮着看看,看看有没有什么方法可以提高速度的,也许是我的数据结构不好,如果谁能帮我设计一个比较好的数据结构的话,我也感激不尽。

我使用的保存索引的是动态数组ArrayList,就是每次更新索引的时候,如果一个子串有上百万个重复的时候,速度就巨慢。

谁能看一下,帮个忙,在下感激不尽!!!
2012年10月14日 00:23
目前还没有答案

相关推荐

    Java大数据面试常见问题.pdf

    本文总结了 Java 大数据面试中常见的问题和答案,涵盖了字符串操作、集合框架、HashMap 和 Hashtable 的区别、final、finally 和 finalize 的区别、switch 语句的使用、多线程实现方法、Java 流类型、main 方法的...

    Java大数据面试常见问题.docx

    Java大数据面试常见问题 Java 大数据面试常见问题中,涵盖了多个知识点,包括 String 和 StringBuffer 的区别、ArrayList、Vector、LinkedList 的存储性能和特性、HashMap 和 Hashtable 的区别、final、finally、...

    解决MySql大数据Like查询慢的问题

    在JAVA模拟LIKE方面,可以通过构建一个倒排索引数据结构,例如字典树(Trie),来快速查找以特定前缀开头的字符串。这样,即使在大量数据中,也可以高效地完成模糊匹配,减少对数据库的压力。 总结,优化MySQL中的...

    大数据爬虫实战

    **Redis** 是一个开源的键值存储系统,它支持多种数据结构如字符串、哈希表、列表、集合等,并提供了丰富的命令集。在大数据爬虫项目中,Redis可以作为中间件用来存储待抓取的URL队列、已抓取的URL记录,以及临时...

    第05章 字符串与正则表达式.pptx

    在Python编程语言中,字符串是数据处理中非常重要的一个部分,尤其在大数据应用中更是不可或缺。本章将详细讲解字符串的基础以及正则表达式的概念。 首先,字符串在Python中是不可变序列,这意味着一旦创建了一个...

    java实现oracle和sqlserver数据库转换(包含大数据)

    8. **错误处理和事务管理**:在数据迁移过程中,可能会遇到各种异常,如网络问题、权限问题或数据不一致。合理的错误处理机制和事务管理能确保数据的完整性和一致性。 9. **性能优化**:在处理大数据时,关注性能至...

    simhash算法的java实现simhash-java.zip

    特点计算字符串的 simhash通过构建智能索引来计算所有字符串之间的相似性,因此可以处理大数据使用使用输入文件和输出文件运行 Maininputfile 的格式(参见 src / test_in):一个文件每行用 utf8 字符集outputfile...

    大数据开发成长之路——Java基础(一)

    在大数据开发领域,Java语言是不可或缺的基础工具,尤其在分布式计算框架如Hadoop和Spark中广泛应用。本篇文章将探讨Java的基础知识,这对于大数据开发者来说至关重要。 首先,了解Java的运行环境是必要的。Java...

    徐葳《40小时掌握java语言之06String类》内部教材

    在Java语言中,String类是用于处理文本的基础类,它...总之,Java中的String类是处理文本的强大工具,它提供了多种方法来比较、搜索、修改和转换字符串。理解和掌握String类的使用,对于编写高质量的Java代码至关重要。

    尚硅谷_宋红康_第9章节练习_Java常用类.doc

    - `substring()`方法:`s.substring(2, 5)`会返回从索引2(包含)到5(不包含)的子字符串,即`"cde"`。 7. **面试题** - 判断题: - 1)正确,如果两个字符串包含相同的值,使用`==`比较会返回`true`。 - 2)...

    Lucene检索文本,建立索引

    首先,**Lucene** 是一个开源的Java库,它提供了完整的搜索功能,包括分词、索引创建、查询解析和结果排序。它的核心功能是能够对文本进行分析,将文本拆分成有意义的单元——称为“词项”(tokens),然后创建一个...

    用Lucene实现Java里面的搜索引擎

    在IT领域,搜索引擎是至关重要的工具,特别是在大数据和信息检索中。Apache Lucene是一个高性能、全文本搜索库,它提供了一个强大的框架来构建自定义的搜索引擎应用。本篇将深入探讨如何利用Java和Lucene来实现一个...

    java2实用教程电子教案

    #### 第五章:数组与字符串 ##### 数组 - **声明**:`int[] arr;` - **创建**:`arr = new int[10];` - **使用**:通过索引访问数组元素。 - **初始化**:`int[] arr = {1, 2, 3};` ##### 字符串 - **创建**:`...

    geohash算法实现Java代码

    GeoHash算法是一种基于地理坐标的分布式空间索引技术,它通过将地球表面的经纬度坐标转化为可比较的字符串,使得我们可以高效地进行地理位置的搜索、范围查询以及邻居查找等操作。这种算法尤其适用于大数据和分布式...

    2020大数据面试题总汇

    10. **循环移位判断**:可以通过将`s1`拼接自身,然后判断`s2`是否为新字符串的子串来实现。 11. **变量修改**:`change`方法中修改`char`数组`ch`的值会在外部可见,但修改`String`类型的`str`不会影响外部变量。 ...

    大数据高级工程师复习题

    例如,`'a' in 'hello'`将返回True,因为'a'是字符串'hello'的成员。 2. 将变量x转换为整数类型的函数是int(x)。 在Python中,int()函数用于将变量转换为整数类型。例如,`x = 3.14`,`int(x)`将返回3。 3. 运行...

    大数据面试问题

    【大数据面试问题】涵盖了许多关键概念,以下是针对这些标签和部分内容的详细解释: 一、Flume 的高可靠性:Flume 通过事务机制确保event的可靠传递。Source和Sink被封装在事务中,由Channel提供事务支持。...

    lecene.net 对多种文件索引并搜索

    搜索阶段,用户输入查询后,Lucene.NET会使用Analyzer分析查询字符串,生成搜索项,然后通过Searcher对象执行搜索,返回匹配的文档。 值得注意的是,为了提高搜索效率,Lucene.NET支持倒排索引,这是一种数据结构,...

    java全文检索

    3. 查询解析:将用户输入的查询字符串转化为可执行的搜索表达式,如布尔运算、短语匹配等。 4. 排序与评分:根据相关性对搜索结果进行排序,常见的评分算法有TF-IDF(词频-逆文档频率)、BM25等。 二、Java全文...

    科技大数据结构名词解释+简答.zip

    10. **Trie(字典树)**:Trie是一种有序树,用于存储字符串集合,通过前缀共享节点来节省空间,便于快速查找和插入字符串。 这些数据结构在大数据处理中扮演着至关重要的角色,比如在数据索引、查询优化、流处理和...

Global site tag (gtag.js) - Google Analytics