草庐IT

jackson-dataformat-avro

全部标签

xml - 您如何全局设置 Jackson 以忽略 Spring 中的未知属性?

Jackson有用于忽略类中未知属性的注释:@JsonIgnoreProperties(ignoreUnknown=true)它允许您使用此注释忽略特定属性:@JsonIgnore如果您想全局设置它,您可以修改对象映射器://jackson1.9andbeforeobjectMapper.configure(DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES,false);//orjackson2.0objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_P

java - PIG : Cannot cast java. lang.String to org.apache.avro.util.Utf8 with AvroStorage inside STORE

我正在使用ApachePIG来减少最初以CSV格式存储的数据,并希望以Avro格式输出。我的PIG脚本的一部分调用了一个javaUDF,它将一些字段附加到输入元组并将修改后的元组传回。执行此操作时,我正在修改输出、PIG、架构:SchemaoutSchema=newSchema(input).getField(1).schema;SchemarecSchema=outSchema.getField(0).schema;recSchema.add(newFieldSchema("aircrafttype",DataType.CHARARRAY));在我的UDF的publicSc​​hem

python - 使用 python 流解析从 org.apache.avro.mapred.AvroAsTextInputFormat 生成的 json 字符串

在使用python读取avro数据文件的hadoop流中,我使用的是输入格式,文档说输入键是JSON中的字符串表示。-inputformatorg.apache.avro.mapred.AvroAsTextInputFormat映射器将其作为行输入获取:line="{u'three':u'3',u'two':u'2',u'one':u'1'}"我如何解析这个字符串,以获得键值对? 最佳答案 我想这就是你需要的:>>>line="{u'three':u'3',u'two':u'2',u'one':u'1'}">>>line"{u'th

hadoop - 为什么我的 pig 作业中我的 avro 输出文件如此之小而如此之多?

我正在运行一个执行一系列连接并使用AvroStorage()编写的pig脚本一切运行良好,我得到了我想要的数据……但它被写入了845个avro文件(每个约30kb)。这似乎根本不对......但我似乎找不到任何我可能已经更改的设置,从我以前的1大avro输出到845小avros(除了添加另一个数据源)。这会改变什么吗?我怎样才能把它恢复到一个或两个文件?谢谢! 最佳答案 一种可能性是更改您的block大小。如果你想回到less文件,你也可以尝试使用parquet。通过pig脚本转换您的.avro文件并将其存储为.parquet文件,

hadoop - 在 avro 序列化数据上构建搜索层索引

我在hdfs上有我的avro序列化数据。现在我正在尝试构建一个搜索界面,我可以在其中查询avro数据并获取结果。我可以使用以下方法,但它有一些缺点:反序列化avro数据并将其添加到配置单元存储中,并使用一些solr/lucene构建索引层并运行查询。如果avro模式有多层怎么办,比如{name:"xyz",height:"180cm",Cities_residing:["X","Y","Z"]Hotels_checkedin:["X","Y","Z"],itemX:{itemY:{itemZ:"546"}}}现在,存储上述分层数据记录将很困难。另外,我不想复制数据,例如反序列化avro

java - Hadoop + Jackson 解析: ObjectMapper reads Object and then breaks

我正在使用Jackson在Hadoop中实现一个JSONRecordReader。到目前为止,我正在使用JUnit+MRUnit在本地进行测试。每个JSON文件包含一个对象,在一些header之后,它有一个字段,其值是一个条目数组,我希望将每个条目理解为一个记录(因此我需要跳过这些header)。我可以通过将FSDataInputStream推进到读取点来做到这一点。在我的本地测试中,我执行以下操作:fs=FileSystem.get(newConfiguration());in=fs.open(newPath(filename));longoffset=getOffset(in,"H

hadoop - 在 pig 中读取二进制 avro

我正在将一个二进制对象发送到HDFS,并且有我的水槽代理和接收器设置如下所示a1.sinks.k1.type=hdfsa1.sinks.k1.channel=c1a1.sinks.k1.hdfs.path=/user/%y-%m-%d/%H%M/%Sa1.sinks.k1.hdfs.filePrefix=events-a1.sinks.k1.hdfs.round=truea1.sinks.k1.hdfs.roundValue=10a1.sinks.k1.hdfs.roundUnit=minutea1.sinks.k1.hdfs.fileType=DataStreama1.sinks.k

python - 使用 Python map reduce 进行 Avro 数据序列化

我有avro数据存在于hdfs文件系统中。我想使用pythonmapreduce读取那些avro数据。我知道如果我必须使用java那么我们可以使用AvroMapper和AvroReducer但使用python我不太确定。这里的任何人都对此进行过研究,或者任何建议都会有很大帮助。提前致谢。 最佳答案 你可以用Pydoop做到这一点>=1.0.0-rc2。这是颜色计数示例的样子:fromcollectionsimportCounterimportpydoop.mapreduce.apiasapiimportpydoop.mapreduc

hadoop - Flume - 有没有办法将 avro 事件(标题和正文)存储到 hdfs 中?

水槽的新手...我正在接收avro事件并将它们存储到HDFS中。我知道默认情况下只有事件的主体存储在HDFS中。我也知道有一个avro_eventserializer.但是我不知道这个序列化器到底在做什么?它如何影响接收器的最终输出?此外,我不知道如何将事件转储到HDFS中以保留其header信息。我需要编写自己的序列化程序吗? 最佳答案 事实证明,序列化程序avro_event确实将header和正文都存储在文件中。这是我设置水槽的方式:a1.sinks.i1.type=hdfsa1.sinks.i1.hdfs.path=hdfs

java - Avro Schema Evolution With GenericData.Record - Mapreduce 过程

我有一个mapreduce程序,它从avro数据中读取数据,对其进行处理并输出avro数据。我有这个avro数据的模式,假设有4列。我使用GenericData.Record来写入avro数据。现在,我使用具有5列的模式在此数据之上创建一个pig关系。第5列是新的,具有avsc文件中定义的默认值。根据我的理解,我应该能够使用带有一列的新模式读取旧数据(由4列生成)。相反,我收到一条错误消息-Tryingtoaccessnon-existcolumn.我错过了什么?Mapreduce驱动程序代码Jobjob=Job.getInstance(getConf());job.setJarByC