2013-10-30 5 views
5

का उपयोग कर कैसंड्रा से सही टाइमस्टैंप प्राप्त करना मैं डेटास्टैक्स पायथन-ड्राइवर का उपयोग कर तालिका से टाइमस्टैम्प पुनर्प्राप्त कर रहा हूं। जो मैं करने की कोशिश कर रहा हूं वह पहले से पुनर्प्राप्त टाइमस्टैम्प को एक var में संग्रहीत करता है और पिछली क्वेरी में इसे टाइमस्टैंप को पुनः प्राप्त करने के लिए अगली क्वेरी में इसका उपयोग करता है। क्वेरी मूल रूप से इस तरह दिखता है:डेटास्टैक्स पायथन-ड्राइवर

cqlsh> SELECT insert_time, message FROM cf WHERE message_key='q1' AND insert_time>'2013-10-30 10:32:44+0530' ORDER BY insert_time ASC LIMIT 1; 


insert_time    | message 
--------------------------+---------------------------------- 
2013-10-30 10:32:45+0530 | 83500612412011e3ab6c1c3e84abd9db 

आप देख सकते हैं CQL से टाइमस्टैम्प 2013-10-30 10:32:45+0530 है। लेकिन जब मैं इसे अजगर-ड्राइवर के माध्यम से पुनः प्राप्त परिणाम भिन्न हैं, (मैं एक अलग सिस्टम पर अजगर क्वेरी को क्रियान्वित कर रहा हूँ और Cass नोड्स में से किसी पर नहीं):

>>> from cassandra.cluster import Cluster 
>>> c = Cluster([10.60.60.2]) 
>>> session = c.connect() 
>>> q = "SELECT insert_time, message FROM cf WHERE message_key='q1' AND insert_time>'2013-10-30 10:32:44+0530' ORDER BY insert_time ASC LIMIT 1" 
>>> rows = session.execute(q) 
>>> print rows 
[Row(insert_time=datetime.datetime(2013, 10, 30, 5, 2, 45, 4000), message=u'83500612412011e3ab6c1c3e84abd9db')] 
>>> timestamp = rows[0][0] 
>>> print t 
2013-10-30 05:02:45.004000 

आप अजगर से टाइमस्टैम्प देख सकते हैं -ड्राइवर2013-10-30 05:02:45.004000 है, जो सीक्यूएल एक से अलग है। न केवल समय अलग है लेकिन प्रतिनिधित्व बदल गया है। इसका उपयोग बाद के प्रश्नों की तुलना करने के लिए नहीं किया जा सकता है।

प्रश्न

  1. मैं गलत क्या कर रहा हूँ अजगर में timestamps पुनः प्राप्त करते समय?
  2. क्या समय-समय पर प्रारूप के बजाय युग के रूप में युग के रूप में आउटपुट करने का कोई तरीका है?
  3. क्या यह घड़ी सिंक या टाइमज़ोन से संबंधित कुछ है?
  4. क्या कोई मेरी मदद कर सकता है ताकि पाइथन पुनर्प्राप्त टाइमस्टैम्प को कैस टाइमस्टैम्प के खिलाफ तुलना करने के लिए पुन: उपयोग किया जा सके?

अग्रिम धन्यवाद। आपकी सहायता की सराहना

सेटअप

  • एकल मेजबान मशीन चल VMs;
  • कैस सैंडबॉक्स- 3 हेडलेस वीएमएस एकल डीसी क्लस्टर के रूप में चल रहा है;
  • मेजबान मशीन से पायथन कोड निष्पादित किया जा रहा है;
  • VMs तिथि, समय एनटीपी का उपयोग कर
  • [cqlsh 4.0.0 मेजबान के साथ सिंक्रनाइज़ | कैसंद्रा 2.0.0 | सीक्यूएल स्पेक 3.1.0 | बचत प्रोटोकॉल 19.37.0]

उत्तर

5

ऐसा लगता है कि cqlsh की तरह आपके स्थानीय समय क्षेत्र में टाइमस्टैम्प (जो 0530 है) प्रदर्शित कर रहा है। पाइथन ड्राइवर यूटीसी में डेटटाइम देता है। इसके लायक होने के लिए, डेटा को कैसंद्रा में एक यूनिक्स टाइमस्टैम्प के रूप में संग्रहीत किया जाता है, जिसमें टाइमज़ोन की अवधारणा नहीं होती है।

मेरा सुझाव यह है कि आप हमेशा उपयोगकर्ता को प्रदर्शित करने से पहले डेटाटाइम के लिए यूटीसी का उपयोग करते हैं।

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