我正在emr集群的s3中对json数据运行map作业。我已经在本地hadoop机器上成功运行了我的应用程序。但是,当我尝试在emr上运行我的工作时,它给了我一个例外。
错误:com.google.gson.jsonsyntaxexception:com.google.gson.stream.malformedjsonexception:json禁止第1行第263列的八进制前缀:04099
代码和数据如下
{“_id”:“101p04098”,“name”:“jodeco rd/exit 222”,“timezoneid”:3150,“length”:2.3259222706745657,“traveltimebyspeedcategoryinhr”:0.017891709774419732,“tmctype”:“roadway”,“functionalclass”:1,“controlledaccess”:true,“geotag”:[33.4774,-84.2158],“positiveoffset”:“04099”,“negativeoffset”:“04635”,“areference”:“00009”,“isarterial”:false,“linklist”:[{u id:127168058,“length”:1.0751088091361,“directionoflink”:“from”},{u id:17007579,“length”:0.0759730295122253,“directionoflink”:“from”},{u id:17007580,“length”:1.06750755312816,“directionoflink”:“from”},{u id:17007581,“length”:0.107332889808,“directionoflink”:“from”} object TmcListReader { val gson: Gson = new GsonBuilder().setFieldNamingStrategy(new FieldNamingStrategy { override def translateName(f: Field): String = { if (f.getName == "id") "_id" else f.getName}}).create } class TmcListReader { import TmcListReader._ def readLocationsInTables(input: Source, tmcTables: List[String]): List[String] = { val tmcLocations: List[String] =input.getLines().map(gson.fromJson(_,classOf[TmcLocation]).getId).toList tmcLocations.filter { location => tmcTables contains location.table} }
1条答案
按热度按时间q0qdq0h21#
似乎在json中,不应该将pad数字保留为零。因此,在上述情况下,“04099”可能需要变成“4099”。
你可能已经发现了这个问题,或者不需要答案,但是把我的问题和你的问题进行比较有助于我找出问题的症结所在,所以我想我会和别人分享,以防其他人也有同样的问题。在我的情况下,我有一个月的“06”,需要成为“6”。