2015-10-07 6 views
8

मैं स्पार्क और कैसंड्रा स्पार्क कनेक्टर का उपयोग कर स्ट्रीम डेटा को कैसंड्रा में सहेजने का प्रयास करता हूं।डेटास्टैक्स स्पार्क कनेक्टर का उपयोग कर कैसंड्रा में शून्य मानों को सहेजें

बनाएँ मॉडल कक्षा::

public class ContentModel { 
    String id; 

    String available_at; //may be null 

    public ContentModel(String id, String available_at){ 
    this.id=id; 
    this.available_at=available_at, 
    } 
} 

मानचित्रण स्ट्रीमिंग सामग्री मॉडल के लिए:

JavaDStream<ContentModel> contentsToModel = myStream.map(new Function<String, ContentModel>() { 
     @Override 
     public ContentModel call(String content) throws Exception { 

      String[] parts = content.split(","); 
      return new ContentModel(parts[0], parts[1]); 
     } 
    }); 

सहेजें:

मैं निम्नलिखित की तरह कुछ बनाया

CassandraStreamingJavaUtil.javaFunctions(contentsToModel).writerBuilder("data", "contents", CassandraJavaUtil.mapToRow(ContentModel.class)).saveToCassandra(); 

हैं रों

com.datastax.spark.connector.types.TypeConversionException: Cannot convert object null to struct.ValueRepr. 

वहाँ स्पार्क कैसेंड्रा कनेक्टर का उपयोग कर शून्य मान स्टोर करने के लिए एक रास्ता है: ome मूल्यों null मैं निम्नलिखित त्रुटि मिलती है कर रहे हैं?

उत्तर

0

कैसंद्रा की शून्य की अवधारणा नहीं है। एक कॉलम खाली या भरा हुआ है। मैंने इस मुद्दे को स्कैला में निम्न तरीके से हल किया: मैंने मानचित्र विधि का उपयोग किया और शून्य मानों की जांच की। मैं एक खाली स्ट्रिंग के साथ शून्य को ओवरराइड करता हूं। बस। वास्तव में अच्छा काम करता है।

+0

मुझे ऐसा नहीं लगता है। मैंने डेटास्टैक्स के जावा मैपिंग ड्राइवर का उपयोग करके कैसंड्रा टेबल में शून्य मान डालने का प्रयास किया है और यह सफल है, भले ही कॉलम का प्रकार int और float हो। और कैसंद्रा भी शून्य दिखाता है और शून्य देता है, इसलिए कथन "कैसंद्रा अवधारणा एफ नल नहीं है" बहुत विश्वास नहीं है। –

0

स्कैला में आप इसके लिए विकल्पों का भी उपयोग कर सकते हैं।

+0

और अधिक जानकारी प्रदान करें – Panther

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