2016-04-11 4 views
6

मैं नवीनतम कैसेंड्रा-चालक-कोर के साथ वसंत-डेटा-कैसेंड्रा 1.3.4 का उपयोग कर की कोशिश की है: 3.0.0 कैसेंड्रा 2.1.12 (पर जो डीएसई 4.8.4 के हिस्से के रूप में आता है) और सब कुछ ठीक काम करता है। जहां एक ही वसंत बैच सादे कैसंड्रा 3.x संस्करणों के साथ काम नहीं करता है। मैंने इसे कैसंड्रा 3.2,3.3 & 3.4 पर आजमाया।वसंत-डेटा-कैसेंड्रा 1.3.4 कैसेंड्रा 3.x के साथ संगत नहीं

मुझे ClassNotFound Exception मिलता है जो नीचे दिए गए स्टैक ट्रेस में उल्लिखित है।

अब मैं पूरी तरह से समझता हूं कि यह एक विशेष विधि (asJavaClass) के कारण है "com.datastax.driver.core.DataType.java" में मौजूद नहीं है।

मेरा सवाल यह है कि इस के आसपास जाने का कोई वैकल्पिक तरीका है?

मैं एक बार डेटा लोड करने के लिए स्प्रिंग बैच का उपयोग कर रहा हूं जो विशाल है। और मैं कैसंद्रा 3.3 से कम कुछ भी नहीं उपयोग कर सकता।

2016-04-11 13:38:32.684 WARN 3166 --- [   main] s.c.a.AnnotationConfigApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mappingContext' defined in class path resource [com/walgreens/batch/config/CassandraConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.cassandra.mapping.CassandraMappingContext]: Factory method 'mappingContext' threw exception; nested exception is java.lang.NoSuchMethodError: com.datastax.driver.core.DataType.asJavaClass()Ljava/lang/Class; 
2016-04-11 13:38:32.808 ERROR 3166 --- [   main] o.s.boot.SpringApplication    : Application startup failed 

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'mappingContext' defined in class path resource [com/walgreens/batch/config/CassandraConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.cassandra.mapping.CassandraMappingContext]: Factory method 'mappingContext' threw exception; nested exception is java.lang.NoSuchMethodError: com.datastax.driver.core.DataType.asJavaClass()Ljava/lang/Class; 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1123) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1018) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:510) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:839) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:538) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:766) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at org.springframework.boot.SpringApplication.createAndRefreshContext(SpringApplication.java:361) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:307) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) [spring-boot-1.3.3.RELEASE.jar:1.3.3.RELEASE] 
    at com.walgreens.batch.WagStoreInventoryBatchJobApplication.main(WagStoreInventoryBatchJobApplication.java:43) [classes/:na] 
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.data.cassandra.mapping.CassandraMappingContext]: Factory method 'mappingContext' threw exception; nested exception is java.lang.NoSuchMethodError: com.datastax.driver.core.DataType.asJavaClass()Ljava/lang/Class; 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    ... 17 common frames omitted 
Caused by: java.lang.NoSuchMethodError: com.datastax.driver.core.DataType.asJavaClass()Ljava/lang/Class; 
    at org.springframework.data.cassandra.mapping.CassandraSimpleTypeHolder.<clinit>(CassandraSimpleTypeHolder.java:62) ~[spring-data-cassandra-1.3.4.RELEASE.jar:na] 
    at org.springframework.data.cassandra.mapping.BasicCassandraMappingContext.<init>(BasicCassandraMappingContext.java:73) ~[spring-data-cassandra-1.3.4.RELEASE.jar:na] 
    at com.walgreens.batch.config.CassandraConfiguration.mappingContext(CassandraConfiguration.java:47) ~[classes/:na] 
    at com.walgreens.batch.config.CassandraConfiguration$$EnhancerBySpringCGLIB$$78a36265.CGLIB$mappingContext$4(<generated>) ~[classes/:na] 
    at com.walgreens.batch.config.CassandraConfiguration$$EnhancerBySpringCGLIB$$78a36265$$FastClassBySpringCGLIB$$c7f2ad2a.invoke(<generated>) ~[classes/:na] 
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:355) ~[spring-context-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    at com.walgreens.batch.config.CassandraConfiguration$$EnhancerBySpringCGLIB$$78a36265.mappingContext(<generated>) ~[classes/:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_60] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[na:1.8.0_60] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[na:1.8.0_60] 
    at java.lang.reflect.Method.invoke(Method.java:497) ~[na:1.8.0_60] 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.2.5.RELEASE.jar:4.2.5.RELEASE] 
    ... 18 common frames omitted 

2016-04-11 13:38:32.811 INFO 3166 --- [   main] .b.l.ClasspathLoggingApplicationListener : Application failed to start with classpath: [file:/Users/Siraj/Documents/workspace/Ask2/WagStoreInventoryBatchJob/target/classes/, file:/Users/Siraj/.m2/repository/org/springframework/boot/spring-boot-starter-batch/1.3.3.RELEASE/spring-boot-starter-batch-1.3.3.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/boot/spring-boot-starter/1.3.3.RELEASE/spring-boot-starter-1.3.3.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/boot/spring-boot/1.3.3.RELEASE/spring-boot-1.3.3.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/boot/spring-boot-autoconfigure/1.3.3.RELEASE/spring-boot-autoconfigure-1.3.3.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/boot/spring-boot-starter-logging/1.3.3.RELEASE/spring-boot-starter-logging-1.3.3.RELEASE.jar, file:/Users/Siraj/.m2/repository/ch/qos/logback/logback-classic/1.1.5/logback-classic-1.1.5.jar, file:/Users/Siraj/.m2/repository/ch/qos/logback/logback-core/1.1.5/logback-core-1.1.5.jar, file:/Users/Siraj/.m2/repository/org/slf4j/jul-to-slf4j/1.7.16/jul-to-slf4j-1.7.16.jar, file:/Users/Siraj/.m2/repository/org/slf4j/log4j-over-slf4j/1.7.16/log4j-over-slf4j-1.7.16.jar, file:/Users/Siraj/.m2/repository/org/yaml/snakeyaml/1.16/snakeyaml-1.16.jar, file:/Users/Siraj/.m2/repository/org/hsqldb/hsqldb/2.3.3/hsqldb-2.3.3.jar, file:/Users/Siraj/.m2/repository/org/springframework/spring-jdbc/4.2.5.RELEASE/spring-jdbc-4.2.5.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/spring-beans/4.2.5.RELEASE/spring-beans-4.2.5.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/batch/spring-batch-core/3.0.6.RELEASE/spring-batch-core-3.0.6.RELEASE.jar, file:/Users/Siraj/.m2/repository/com/ibm/jbatch/com.ibm.jbatch-tck-spi/1.0/com.ibm.jbatch-tck-spi-1.0.jar, file:/Users/Siraj/.m2/repository/javax/batch/javax.batch-api/1.0/javax.batch-api-1.0.jar, file:/Users/Siraj/.m2/repository/com/thoughtworks/xstream/xstream/1.4.7/xstream-1.4.7.jar, file:/Users/Siraj/.m2/repository/xmlpull/xmlpull/1.1.3.1/xmlpull-1.1.3.1.jar, file:/Users/Siraj/.m2/repository/xpp3/xpp3_min/1.1.4c/xpp3_min-1.1.4c.jar, file:/Users/Siraj/.m2/repository/org/codehaus/jettison/jettison/1.2/jettison-1.2.jar, file:/Users/Siraj/.m2/repository/org/springframework/batch/spring-batch-infrastructure/3.0.6.RELEASE/spring-batch-infrastructure-3.0.6.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/retry/spring-retry/1.1.2.RELEASE/spring-retry-1.1.2.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/spring-context/4.2.5.RELEASE/spring-context-4.2.5.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/boot/spring-boot-starter-data-cassandra/1.3.3.RELEASE/spring-boot-starter-data-cassandra-1.3.3.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/spring-tx/4.2.5.RELEASE/spring-tx-4.2.5.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/data/spring-data-cassandra/1.3.4.RELEASE/spring-data-cassandra-1.3.4.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/data/spring-cql/1.3.4.RELEASE/spring-cql-1.3.4.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/spring-expression/4.2.5.RELEASE/spring-expression-4.2.5.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/data/spring-data-commons/1.11.4.RELEASE/spring-data-commons-1.11.4.RELEASE.jar, file:/Users/Siraj/.m2/repository/com/datastax/cassandra/cassandra-driver-dse/2.1.9/cassandra-driver-dse-2.1.9.jar, file:/Users/Siraj/.m2/repository/org/slf4j/slf4j-api/1.7.16/slf4j-api-1.7.16.jar, file:/Users/Siraj/.m2/repository/org/slf4j/jcl-over-slf4j/1.7.16/jcl-over-slf4j-1.7.16.jar, file:/Users/Siraj/.m2/repository/org/springframework/boot/spring-boot-starter-jdbc/1.3.3.RELEASE/spring-boot-starter-jdbc-1.3.3.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/apache/tomcat/tomcat-jdbc/8.0.32/tomcat-jdbc-8.0.32.jar, file:/Users/Siraj/.m2/repository/org/apache/tomcat/tomcat-juli/8.0.32/tomcat-juli-8.0.32.jar, file:/Users/Siraj/.m2/repository/com/datastax/cassandra/cassandra-driver-core/3.0.0/cassandra-driver-core-3.0.0.jar, file:/Users/Siraj/.m2/repository/io/netty/netty-handler/4.0.33.Final/netty-handler-4.0.33.Final.jar, file:/Users/Siraj/.m2/repository/io/netty/netty-buffer/4.0.33.Final/netty-buffer-4.0.33.Final.jar, file:/Users/Siraj/.m2/repository/io/netty/netty-common/4.0.33.Final/netty-common-4.0.33.Final.jar, file:/Users/Siraj/.m2/repository/io/netty/netty-transport/4.0.33.Final/netty-transport-4.0.33.Final.jar, file:/Users/Siraj/.m2/repository/io/netty/netty-codec/4.0.33.Final/netty-codec-4.0.33.Final.jar, file:/Users/Siraj/.m2/repository/com/google/guava/guava/16.0.1/guava-16.0.1.jar, file:/Users/Siraj/.m2/repository/io/dropwizard/metrics/metrics-core/3.1.2/metrics-core-3.1.2.jar, file:/Users/Siraj/.m2/repository/joda-time/joda-time/2.8.2/joda-time-2.8.2.jar, file:/Users/Siraj/.m2/repository/commons-lang/commons-lang/2.6/commons-lang-2.6.jar, file:/Users/Siraj/.m2/repository/org/springframework/boot/spring-boot-configuration-processor/1.3.3.RELEASE/spring-boot-configuration-processor-1.3.3.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/json/json/20140107/json-20140107.jar, file:/Users/Siraj/.m2/repository/org/springframework/spring-core/4.2.5.RELEASE/spring-core-4.2.5.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/boot/spring-boot-starter-aop/1.3.3.RELEASE/spring-boot-starter-aop-1.3.3.RELEASE.jar, file:/Users/Siraj/.m2/repository/org/springframework/spring-aop/4.2.5.RELEASE/spring-aop-4.2.5.RELEASE.jar, file:/Users/Siraj/.m2/repository/aopalliance/aopalliance/1.0/aopalliance-1.0.jar, file:/Users/Siraj/.m2/repository/org/aspectj/aspectjweaver/1.8.8/aspectjweaver-1.8.8.jar, file:/Users/Siraj/.m2/repository/com/oracle/ojdbc6/11.2.0.4/ojdbc6-11.2.0.4.jar] 
+1

सुनिश्चित नहीं हैं कि अपने कार्यान्वयन वसंत-डाटा-कैसेंड्रा के साथ वसंत-बैच का उपयोग कर की तरह लग रहा वास्तव में क्या (हार्ड कहने के लिए के बाद से इन चौखटे कर देगा थोड़ा हारून के रूप में अपारदर्शी अंदरूनी कामकाज का उल्लेख किया गया है)। हालांकि कैसेंड्रा में "बैच" लोड करने के लिए इस लेख एक [अवश्य पढ़ें] (https://lostechies.com/ryansvihla/2014/08/28/cassandra-batch-loading-without-the-batch-keyword/) – fromanator

+0

वसंत है डाटा कैसेंड्रा 1.5 जारी किया गया है जो आंतरिक रूप से उपयोग करता कैसेंड्रा जावा चालक 3.1.3 – denzal

उत्तर

0

nested exception is java.lang.NoSuchMethodError: com.datastax.driver.core.DataType.asJavaClass()Ljava/lang/Class; 2016-04-11 13:38:32.808

हो सकता है कि वसंत बैच के द्वारा प्रयोग किया जावा चालक के संस्करण का उपयोग नहीं कर रहा है नवीनतम (3.0.0)

+0

हाँ वे अभी भी Datastax जावा क्लाइंट ड्राइवर [2.1.7.1] (प्रयोग कर रहे हैं https://github.com/spring-projects/spring-data-cassandra/blob/ मास्टर/pom.xml # L37) – fromanator

+1

SO यह आपकी समस्या है, 3.0.0 ड्राइवर का समर्थन करने वाले संस्करण में स्प्रिंग बैच को अपग्रेड करने की आवश्यकता है। आप बंदर पैच करने की कोशिश कर सकते हैं और pom.xml में ड्राइवर संस्करण को मजबूर कर सकते हैं लेकिन यह न ही काम कर सकता है। – doanduyhai

+0

वसंत डेटा कैसंद्रा अभी भी 2.x चालक का उपयोग करता है। हमारे पास निकट भविष्य में 3.0 तक अपग्रेड करने की योजना है। – mp911de

1

दुर्भाग्य से, यह जोखिम ले जब आप का उपयोग करने के विकल्प चुन में से एक है approved DataStax Driver के बजाय एक ढांचा चालक।

यदि आप चाहते हैं कैसेंड्रा की एक अत्याधुनिक संस्करण का उपयोग करने के लिए है, तो के लिए एक सफल आवेदन आप भी DataStax जावा ड्राइवर (आपके मामले में) का उपयोग करना चाहिए की तैनाती के लिए अपने उच्चतम संभावना करता है।

इसके अतिरिक्त, तुम क्यों वसंत-कैसेंड्रा-डेटा का उपयोग कर पुनर्विचार करने के लिए चाहते हो सकता है के रूप में दो अन्य कारण हैं:

  • जब आप insert(List<T> entities, WriteOptions options) (और संबंधित विधि) फोन वसंत-डेटा-कैसेंड्रा एक CQL चलाता है बैच इंसर्ट पीछे के दृश्य। बैच आवेषण का यह विशेष उपयोग कैसंद्रा में एक ज्ञात एंटी-पैटर्न है, और आपके क्लस्टर की स्थिरता को खतरे में डाल सकता है।
  • जब कई पंक्तियों के पृष्ठों, वसंत-डेटा-कैसेंड्रा एक COUNT(*) परदे के पीछे चला जाएगा। यह कई नोड्स के साथ एक क्लस्टर पर चलाने के लिए एक बुरी अक्षम क्वेरी है। यह बड़ी टेबल पर धीमा और संभावित समय-समय पर होगा।

जैसा कि मैंने हमेशा कहा है, आप डेटास्टैक्स-अनुमोदित ड्राइवर चुनकर गलत नहीं जा सकते हैं।

+0

जबकि आपने जो कुछ भी ऊपर कहा है वह सही है, यह न भूलें कि मूल चालक का उपयोग करना मतलब है कि आप अपने एप्लिकेशन को एक डेटाबेस में हार्ड-कोडिंग कर रहे हैं। एक देशी चालक की पूर्ण कार्यक्षमता के खर्च पर वसंत डेटा आपके कोड को अधिक पोर्टेबल बनाता है। अपना ज़हर उठाएं। :) – Beaker

2

स्प्रिंग-डेटा-कैसंद्रा 1.3.4 (और यहां तक ​​कि नवीनतम देव संस्करण) क्लाइंट ड्राइवर Cassandra 2.1.x का उपयोग करता है डेटास्टैक्स ड्राइवर compatibility chart देखें और आप देखेंगे कि आपको कैसंड्रा 3.x का उपयोग करने के लिए 3.x क्लाइंट ड्राइवर की आवश्यकता है।

और जैसा कि हारून ने उल्लेख किया है, क्योंकि यह शुरू में पहली बार एक आरडीबीएमएस इंटरफेस के लिए डिजाइन किया गया था सी * के लिए सबसे अच्छा ORM कार्यान्वयन नहीं है इस प्रकार कार्यान्वयन कि कैसेंड्रा तरह NoSQL डेटाबेस के लिए विरोधी पैटर्न हैं।

आपने बताया कि यह एक बड़ा डेटा डेटा का भार है, तो मैं पहले Cassandra from this article (संकेत बैच का उपयोग न करें) में बहुत सारे डेटा लोड करने का सबसे अच्छा तरीका पढ़ूंगा। मैं बॉक्स से बाहर कुछ डेटा स्थानांतरण करने के लिए वहाँ बाहर किसी भी वास्तव में अच्छा उपकरणों में से पता नहीं (अपने स्रोत प्रणाली भी है कि क्या पर निर्भर करता है) है। तो आपको शायद कुछ कस्टम लिखना होगा, या कुछ अनुकूलित करना होगा।

संबंधित मुद्दे