Let एक छोटे से json फ़ाइल हो config.json
:स्पार्क दुर्घटना जबकि json फ़ाइल पढ़ने जब एडब्ल्यूएस-जावा-sdk के साथ जुड़ा हुआ
{
"toto": 1
}
मैं (क्योंकि फ़ाइल हो सकता है एक सरल कोड है कि sc.textFile
साथ json फ़ाइल को पढ़ने बनाया एस 3, स्थानीय या HDFS पर है, तो textfile सुविधाजनक है)
import org.apache.spark.{SparkContext, SparkConf}
object testAwsSdk {
def main(args:Array[String]):Unit = {
val sparkConf = new SparkConf().setAppName("test-aws-sdk").setMaster("local[*]")
val sc = new SparkContext(sparkConf)
val json = sc.textFile("config.json")
println(json.collect().mkString("\n"))
}
}
एसबीटी फ़ाइल पुल केवल spark-core
पुस्तकालय
libraryDependencies ++= Seq(
"org.apache.spark" %% "spark-core" % "1.5.1" % "compile"
)
प्रोग्राम अपेक्षाकृत काम करता है, मानक आउटपुट पर config.json की सामग्री लिख रहा है।
अब मैं एस 3 तक पहुंचने के लिए अमेज़-जावा-एसडीके, अमेज़ॅन के एसडीके के साथ भी लिंक करना चाहता हूं।
libraryDependencies ++= Seq(
"com.amazonaws" % "aws-java-sdk" % "1.10.30" % "compile",
"org.apache.spark" %% "spark-core" % "1.5.1" % "compile"
)
उसी कोड को निष्पादित करते हुए स्पार्क निम्नलिखित अपवाद को फेंकता है।
Exception in thread "main" com.fasterxml.jackson.databind.JsonMappingException: Could not find creator property with name 'id' (in class org.apache.spark.rdd.RDDOperationScope)
at [Source: {"id":"0","name":"textFile"}; line: 1, column: 1]
at com.fasterxml.jackson.databind.JsonMappingException.from(JsonMappingException.java:148)
at com.fasterxml.jackson.databind.DeserializationContext.mappingException(DeserializationContext.java:843)
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.addBeanProps(BeanDeserializerFactory.java:533)
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.buildBeanDeserializer(BeanDeserializerFactory.java:220)
at com.fasterxml.jackson.databind.deser.BeanDeserializerFactory.createBeanDeserializer(BeanDeserializerFactory.java:143)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer2(DeserializerCache.java:409)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createDeserializer(DeserializerCache.java:358)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCache2(DeserializerCache.java:265)
at com.fasterxml.jackson.databind.deser.DeserializerCache._createAndCacheValueDeserializer(DeserializerCache.java:245)
at com.fasterxml.jackson.databind.deser.DeserializerCache.findValueDeserializer(DeserializerCache.java:143)
at com.fasterxml.jackson.databind.DeserializationContext.findRootValueDeserializer(DeserializationContext.java:439)
at com.fasterxml.jackson.databind.ObjectMapper._findRootDeserializer(ObjectMapper.java:3666)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3558)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2578)
at org.apache.spark.rdd.RDDOperationScope$.fromJson(RDDOperationScope.scala:82)
at org.apache.spark.rdd.RDDOperationScope$$anonfun$5.apply(RDDOperationScope.scala:133)
at org.apache.spark.rdd.RDDOperationScope$$anonfun$5.apply(RDDOperationScope.scala:133)
at scala.Option.map(Option.scala:145)
at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:133)
at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:108)
at org.apache.spark.SparkContext.withScope(SparkContext.scala:709)
at org.apache.spark.SparkContext.hadoopFile(SparkContext.scala:1012)
at org.apache.spark.SparkContext$$anonfun$textFile$1.apply(SparkContext.scala:827)
at org.apache.spark.SparkContext$$anonfun$textFile$1.apply(SparkContext.scala:825)
at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:147)
at org.apache.spark.rdd.RDDOperationScope$.withScope(RDDOperationScope.scala:108)
at org.apache.spark.SparkContext.withScope(SparkContext.scala:709)
at org.apache.spark.SparkContext.textFile(SparkContext.scala:825)
at testAwsSdk$.main(testAwsSdk.scala:11)
at testAwsSdk.main(testAwsSdk.scala)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
ढेर पढ़ना, ऐसा लगता है जब एडब्ल्यूएस-जावा-sdk जुड़ा हुआ है, sc.textFile
पता लगाता है कि फ़ाइल एक json फ़ाइल है और जैक्सन एक निश्चित प्रारूप है, जो यह निश्चित रूप से नहीं मिल सकता है यह सोचते हैं के साथ यह पार्स करने के लिए कोशिश है कि । मुझे aws-java-sdk से लिंक करने की आवश्यकता है, इसलिए मेरे प्रश्न हैं:
1- aws-java-sdk
क्यों जोड़ना spark-core
के व्यवहार को संशोधित करता है?
2- क्या कोई काम है (फ़ाइल एचडीएफएस, एस 3 या स्थानीय पर हो सकती है)?
ऐसा इसलिए है क्योंकि aws-java-sdk जैक्सन लाइब्रेरी का नवीनतम संस्करण 2.5.3 का उपयोग कर रहा है और स्पार्क पुराने 2.4.4 का उपयोग कर रहा है। मुझे एक ही समस्या का सामना करना पड़ रहा है लेकिन इसे हल नहीं कर सका। अगर आपको समाधान मिल गया है तो कृपया इसे साझा करें। धन्यवाद –
हाय हाफिज ... बहुत परेशान नहीं है? मैं मामले को एडब्ल्यूएस भेजता हूं। उन्होंने पुष्टि की कि यह एक संगतता मुद्दा है। उन्होंने मुझे स्पष्ट समाधान नहीं बताया है। इसे एप को सॉर्ट करने का प्रयास करेंगे। – Boris
हाय बोरिस! हां यह इस मुद्दे का सामना करने के लिए परेशान है, लेकिन मैंने स्पार्क-कोर से जैक्सन कोर और जैक्सन मॉड्यूल पुस्तकालयों को छोड़कर इसे हल किया है और जैक्सन कोर नवीनतम लाइब्रेरी निर्भरता –