有时我们需要查询大文本而不是数据库,这时就需要流式读入文件并实现查询算法,还要进行并行处理以提高性能。但JAVA本身缺少相应的类库,需要硬编码才能实现结构化文件计算,代码复杂且可读性差,难以实现高效的并行处理。
使用免费的集算器可以弥补这一不足。集算器封装了丰富的结构化文件读写和游标计算函数,书写简单代码就能实现并行计算,并提供了易用的JDBC接口。JAVA应用程序可以将集算器脚本文件当做数据库存储过程执行,传入参数并用JDBC获得返回结果,详情参考集算器用作Java计算类库的应用结构。
下面举例说明集算器协助JAVA查询大文本的过程。
源数据sOrder.txt如下:
要查询起止时间是startDate、endDate之间,金额大于argAmount的订单,只需使用如下代码:
使用函数cursor以游标方式打开文件,@t表示将第1行读为列名。之后进行结构化查询,查询结果不大的情况下可以用fetch读入内存,如下:
如果查询结果内存装不下,可以在集算器中直接返回游标(即去掉A3代码),在JAVA中只需用JDBC流式读取即可获得计算结果。
集算器还可以实现多线程并行计算,最简单方法就是在上述代码的cursor函数中使用@m,这表示多线程读取文件。
也可以手工分段,在读取和计算部分都使用多线程并行计算,代码如下:
上述代码用8个游标打开文件,每次读取文件的指定部分。@z表示按字节数将文件大致分为几部分,只读取其中一部分,集算器会自动去头补尾,以保证取出的数据是整行。
函数conj可合并计算结果,@x表示合并的对象是游标,@m表示并行计算。需要注意的是,函数conj无法保证结果顺序和源数据一致。
上述代码使用了集算器内置的并行计算函数,如果计算过程较复杂,并且内存可以装下计算结果,则适合用显式并行计算语句。代码如下:
上述代码用8个子线程分别读取大文件,执行查询后再将结果返回给主线程。函数fork可执行子线程,作用范围B2-B3。线程内部可用A2来获取入口参数,线程外部可用A2获取所有线程的计算结果。
对于有序数据,可以用二分法来提高查询性能。比如数据已按Client和OrderID排序,现在要根据参数argClient和argOrder找出相应的记录,可以使用下面的代码:
begin,end是二分法的起止位置,m是中间位置。
B4:按字节数定位到中间位置,打开游标读入一条记录,集算器会自动实现去头补尾,取出完整记录。如果定位成功,则将当前记录存储在C5。如果定位不成功,则继续比较集合大小并重新设置begin,end。
相关推荐
在处理大数据量的文本文件时,Java 提供了多种方式来实现高效、低内存占用的文件读取操作。本文将围绕标题“java读取超大文本文件”及其相关描述和部分代码片段进行深入解析,探讨如何有效地读取大型文本文件。 ###...
java可以读取各种文本文档中的内容,也可以操作文本文档(word,excel,pdf,txt等格式的文档)
在Java环境中实现KMeans算法进行文本聚类,可以为大数据分析、信息检索和推荐系统等应用场景提供有力支持。 KMeans算法的基本思想是通过迭代过程,不断调整样本的归属,使得同一簇内的样本尽可能接近,不同簇间的...
本文主要探讨的是如何在Java环境下利用jieba分词库来实现中文文本的摘要生成。jieba是一个非常流行的开源中文分词库,它支持多种功能,包括分词、词性标注、关键词提取等,对于处理中文文本具有很高的效率和准确性。...
本文将深入探讨一个基于Java实现的文本编辑器项目,旨在帮助初学者理解如何利用Java进行图形用户界面(GUI)编程,以及如何实现基本的文本编辑功能。 首先,我们要明白Java是一种广泛使用的多平台编程语言,它具有...
java文本编辑器java文本编辑器java文本编辑器java文本编辑器java文本编辑器java文本编辑器java文本编辑器java文本编辑器java文本编辑器java文本编辑器java文本编辑器java文本编辑器java文本编辑器java文本编辑器java...
本次使用JAVA语言,采用3DES加密算法进行对文本文件的加密,通过二进制和十六进制的转换来实现,产生加密文件,再对加密文件进行解密。 关键词:DES加密算法、加密、解密。摘要 随着现代网络技术的飞速发展,人们...
JAVA文本编辑器 JAVA文本编辑器 JAVA文本编辑器 JAVA文本编辑器 JAVA文本编辑器 JAVA文本编辑器 JAVA文本编辑器 JAVA文本编辑器 JAVA文本编辑器 JAVA文本编辑器 JAVA文本编辑器 JAVA文本编辑器 JAVA文本编辑器 JAVA...
java毕业设计——文本编辑器.zip java毕业设计——文本编辑器.zip java毕业设计——文本编辑器.zip java毕业设计——文本编辑器.zip java毕业设计——文本编辑器.zip java毕业设计——文本编辑器.zip java毕业设计...
2. **Java文本比较算法**:在Java中,实现文本比对通常涉及字符串操作,如`equals()`、`contains()`等方法,但更复杂的比对需求会使用特定的算法。例如,Jaccard相似度、余弦相似度、Levenshtein距离等。 3. **...
基于java实现的文本编辑器基于java实现的文本编辑器基于java实现的文本编辑器基于java实现的文本编辑器基于java实现的文本编辑器基于java实现的文本编辑器基于java实现的文本编辑器基于java实现的文本编辑器基于java...
Java语言实现文本转语音主要依赖于特定的库和API,其中一种常见的方法是通过调用DLL(动态链接库)文件来实现。在这个场景下,Java程序利用Jacob库来与Windows系统的语音合成引擎交互,将文本转化为可听见的语音。...
解决当内存资源不充足时大数据量的JSON文本解析为JSON对象会导致内存溢出的问题。 基于org.json的部分源代码,以及新增的JsonLazyer类。 原理:用时创建的规则降低传统解析器一次性将...大容量JSON文本解析为JSON对象。
Java编写的文本加密器是一种用于保护隐私和敏感信息的实用工具。它的工作原理是对文本进行编码,使得原始数据变得难以理解,除非拥有正确的解密密钥。这种加密过程是通过应用特定的算法来实现的,这些算法可以是对称...
在Java编程语言中,将普通文本转换为Excel文件是一项常见的任务,特别是在数据分析、报表生成或者数据导出场景中。这个例子提供了一种方法,通过Java API来实现这一功能。主要涉及的技术点包括对Apache POI库的使用...
Java简易文本编辑器是一款基于Java编程语言开发的轻量级应用程序,主要功能是提供文本的查看、编辑以及查找替换操作。这款编辑器旨在为用户提供一个简单易用的平台,进行基本的文字处理工作,如编写代码、记事或者...
在Java编程中,将HTML字符串转换为纯文本字符串是一个常见的需求,这主要涉及到解析HTML文档并提取其中的文本内容。HTML是一种标记语言,用于构建网页结构,而纯文本则只包含可读字符,不含有任何格式化或结构信息。...
Java作为一种通用且强大的编程语言,提供了丰富的库和工具来实现文本相似度计算。以下我们将深入探讨如何在Java中实现文本相似度。 首先,文本相似度的计算通常基于特定的算法,例如余弦相似度、Jaccard相似度、...
总的来说,本项目利用Java和HanLP实现了高效、准确的文本相似度对比功能,这对于需要处理大量文本数据的场景非常有帮助。通过SimHash算法,可以在保证计算效率的同时,有效评估文本之间的相似性。而HanLP的使用则...