在JAVA中如何从集合中提取数据
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在JAVA中如何从集合中提取数据相关的知识,希望对你有一定的参考价值。
List<CZ_TASKVALUE> configs = cztaskvalueService.query(task, "");if(configs==null || configs.size()==0)
jsonString = "success:false,msg:'无数据'";
out.write(jsonString);
logger.info(jsonString);
out.flush();
out.close();
return null;
jsonString = "success:true,taskid:'"+taskid+"',data:[";//"]";
int i=0;
for(CZ_TASKVALUE r:configs)
if(i!=0) jsonString += ",";
i++;
String t = "lng:'"+r.getLng()+"',lat:'"+r.getLat()+"',testvalue:'"+r.getTestvalue()+"',createtime:'"+r.getCreatetime()+"'";
jsonString += t;
jsonString += "]";
out.write(jsonString);
//logger.info(jsonString);
out.flush();
out.close();
return null;
用for循环遍历出来
参考技术A 一般集合类都提供有提取数据的方法(例如:getXXX(int index),getXXX(Object key)) 。本回答被提问者采纳 参考技术B 方法很多的 可以通过循环语句提取 也可以通过索引提取 参考技术C for each方法或者迭代如何从 Java 中的 avro 文件中提取模式
【中文标题】如何从 Java 中的 avro 文件中提取模式【英文标题】:How to extract schema from an avro file in Java 【发布时间】:2018-01-11 19:13:36 【问题描述】:如何从 Java 中的 avro 文件中先提取模式,然后再提取数据?与this 问题相同,但在 java 中除外。
我已经看到了如何从 avsc 文件而不是 avro 文件获取架构的示例。我应该往哪个方向看?
Schema schema = new Schema.Parser().parse(
new File("/home/Hadoop/Avro/schema/emp.avsc")
);
【问题讨论】:
【参考方案1】:您可以使用此处显示的数据块库https://github.com/databricks/spark-avro,它将 avro 文件加载到Dataframe
(Dataset<Row>
)
一旦有了Dataset<Row>
,就可以直接使用df.schema()
获取架构
【讨论】:
抱歉,我刚刚意识到您并没有真正开始使用 Spark。如果您还没有使用 Spark,那么我的解决方案是麻烦多于其价值。不过,我会留下答案,以防来自 Spark 视角的人有同样的问题 我没有使用 Spark。只是普通的香草 avro 工具罐,但谢谢。【参考方案2】:如果您想知道 Avro 文件的架构而不需要生成相应的类或关心文件属于哪个类,可以使用GenericDatumReader
:
DatumReader<GenericRecord> datumReader = new GenericDatumReader<>();
DataFileReader<GenericRecord> dataFileReader = new DataFileReader<>(new File("file.avro"), datumReader);
Schema schema = dataFileReader.getSchema();
System.out.println(schema);
然后就可以读取文件里面的数据了:
GenericRecord record = null;
while (dataFileReader.hasNext())
record = dataFileReader.next(record);
System.out.println(record);
【讨论】:
对于那些使用 C# Avro Apache 库的人,可以使用实用函数DataFileReader<GenericRecord>.OpenReader(filename);
来实例化 dataFileReader
。实例化后,dataFileReader 就像在 Java 中一样使用。
我正在尝试从字节数组而不是文件(同时包含模式和有效负载)中读取模式和数据。我该怎么做?【参考方案3】:
感谢@Helder Pereira 的回答。作为补充,模式也可以从GenericRecord
实例的getSchema()
中获取。Here 是关于它的现场演示,上面的链接显示了如何在 java 中为Parquet
获取数据和模式, ORC
和 AVRO
数据格式。
【讨论】:
以上是关于在JAVA中如何从集合中提取数据的主要内容,如果未能解决你的问题,请参考以下文章
通过 JAVA 从 MongoDB“NYC 餐厅”集合中提取地理键字段
如何根据从 objectId 中提取的创建日期对 MongoDB 集合进行分组?