我在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
我正在将一个二进制对象发送到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
我有avro数据存在于hdfs文件系统中。我想使用pythonmapreduce读取那些avro数据。我知道如果我必须使用java那么我们可以使用AvroMapper和AvroReducer但使用python我不太确定。这里的任何人都对此进行过研究,或者任何建议都会有很大帮助。提前致谢。 最佳答案 你可以用Pydoop做到这一点>=1.0.0-rc2。这是颜色计数示例的样子:fromcollectionsimportCounterimportpydoop.mapreduce.apiasapiimportpydoop.mapreduc
水槽的新手...我正在接收avro事件并将它们存储到HDFS中。我知道默认情况下只有事件的主体存储在HDFS中。我也知道有一个avro_eventserializer.但是我不知道这个序列化器到底在做什么?它如何影响接收器的最终输出?此外,我不知道如何将事件转储到HDFS中以保留其header信息。我需要编写自己的序列化程序吗? 最佳答案 事实证明,序列化程序avro_event确实将header和正文都存储在文件中。这是我设置水槽的方式:a1.sinks.i1.type=hdfsa1.sinks.i1.hdfs.path=hdfs
我有一个mapreduce程序,它从avro数据中读取数据,对其进行处理并输出avro数据。我有这个avro数据的模式,假设有4列。我使用GenericData.Record来写入avro数据。现在,我使用具有5列的模式在此数据之上创建一个pig关系。第5列是新的,具有avsc文件中定义的默认值。根据我的理解,我应该能够使用带有一列的新模式读取旧数据(由4列生成)。相反,我收到一条错误消息-Tryingtoaccessnon-existcolumn.我错过了什么?Mapreduce驱动程序代码Jobjob=Job.getInstance(getConf());job.setJarByC
我创建了一个Mapper&Reducer,它使用AVRO作为输入,使用map-output和reduce输出。创建MRUnit测试时,我得到以下堆栈跟踪:java.lang.NullPointerExceptionatorg.apache.hadoop.io.serializer.SerializationFactory.getSerializer(SerializationFactory.java:73)atorg.apache.hadoop.mrunit.mock.MockOutputCollector.deepCopy(MockOutputCollector.java:74)at
我有一个cronjob,每5分钟从Internet上的服务器下载zip文件(200字节到1MB)。如果我按原样将zip文件导入HDFS,我会遇到臭名昭著的Hadoop小文件大小问题。为了避免在HDFS中堆积小文件,处理zip文件中的文本数据并将它们转换为avro文件,然后每6小时等待一次将我的avro文件添加到HDFS中。使用这种方法,我设法将文件大小大于64MB的avro文件导入到HDFS中。文件大小从50MB到400MB不等。我担心的是,如果我开始构建开始进入500KBavro文件大小范围或更大的文件大小,会发生什么情况。这会导致Hadoop出现问题吗?其他人如何处理这种情况?
我正在尝试根据从BigQuery中的原始谷歌分析数据导出的avro文件在azureHDInsight上创建一个配置单元表。这似乎有效。我可以创建表,并且在运行DESCRIBE时没有错误。但是当我尝试选择结果时,即使我只选择了两个非嵌套列,我也会收到一个错误:“java.lang.IllegalArgumentException”。这是我创建表格的方式:DROPTABLEIFEXISTSga_sessions_20150106;CREATEEXTERNALTABLEIFNOTEXISTSga_sessions_20150106ROWFORMATSERDE'org.apache.hadoo
我在HDFS文件夹/user/data/output_files/file_2017-10-18中有一些avro文件scala>valhdfsLoc="/user/data/output_files/file_2017-10-18/*.avro"hdfsLoc:String=/user/data/output_files/file_2017-10-18/*.avroscala>valconf=newConfiguration()scala>valfs=FileSystem.get(conf)scala>valresult=fs.exists(newPath(hdfsLoc))resul
我正在尝试在使用spark-scala生成的一些avro文件之上创建一个Hive外部表。我正在使用CDH5.16,它有hive1.1、spark1.6。我创建了hive外部表,它运行成功。但是当我查询数据时,我得到所有列的NULL。Myproblemissimilartothis经过一些研究,我发现这可能是模式的问题。但是我无法在该位置找到这些avro文件的架构文件。我对avro文件类型还很陌生。有人可以帮我解决这个问题吗?下面是我的spark代码片段,我将文件保存为avro:df.write.mode(SaveMode.Overwrite).format("com.databrick