संस्करणों में व्यापक संगतता
कुल मिलाकर कदम पाइरो / पंख (पैंड्स / मेसकप से पदावनति चेतावनी) का रहा है। हालाँकि , विनिर्देशन में क्षणिकता के साथ मेरे पास एक चुनौती है। Pyarrow 0.15.1 के साथ क्रमबद्ध डेटा में 0.16.0 ARROW-7961 के साथ deserialized नहीं किया जा सकता है । मैं रेडिस का उपयोग करने के लिए क्रमांकन का उपयोग कर रहा हूं ताकि एक बाइनरी एन्कोडिंग का उपयोग करना पड़े।
मैं विभिन्न विकल्पों (सेवानिवृत्त नोटबुक का उपयोग करके) को रिटायर कर चुका हूं
import sys, pickle, zlib, warnings, io
class foocls:
def pyarrow(out): return pa.serialize(out).to_buffer().to_pybytes()
def msgpack(out): return out.to_msgpack()
def pickle(out): return pickle.dumps(out)
def feather(out): return out.to_feather(io.BytesIO())
def parquet(out): return out.to_parquet(io.BytesIO())
warnings.filterwarnings("ignore")
for c in foocls.__dict__.values():
sbreak = True
try:
c(out)
print(c.__name__, "before serialization", sys.getsizeof(out))
print(c.__name__, sys.getsizeof(c(out)))
%timeit -n 50 c(out)
print(c.__name__, "zlib", sys.getsizeof(zlib.compress(c(out))))
%timeit -n 50 zlib.compress(c(out))
except TypeError as e:
if "not callable" in str(e): sbreak = False
else: raise
except (ValueError) as e: print(c.__name__, "ERROR", e)
finally:
if sbreak: print("=+=" * 30)
warnings.filterwarnings("default")
मेरे डेटा फ़्रेम के लिए निम्न परिणामों के साथ ( out
ज्यूपिटर वैरिएबल में)
pyarrow before serialization 533366
pyarrow 120805
1.03 ms ± 43.9 µs per loop (mean ± std. dev. of 7 runs, 50 loops each)
pyarrow zlib 20517
2.78 ms ± 81.8 µs per loop (mean ± std. dev. of 7 runs, 50 loops each)
=+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+=
msgpack before serialization 533366
msgpack 109039
1.74 ms ± 72.8 µs per loop (mean ± std. dev. of 7 runs, 50 loops each)
msgpack zlib 16639
3.05 ms ± 71.7 µs per loop (mean ± std. dev. of 7 runs, 50 loops each)
=+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+=
pickle before serialization 533366
pickle 142121
733 µs ± 38.3 µs per loop (mean ± std. dev. of 7 runs, 50 loops each)
pickle zlib 29477
3.81 ms ± 60.4 µs per loop (mean ± std. dev. of 7 runs, 50 loops each)
=+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+=
feather ERROR feather does not support serializing a non-default index for the index; you can .reset_index() to make the index into column(s)
=+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+=
parquet ERROR Nested column branch had multiple children: struct<x: double, y: double>
=+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+==+=
पंख और लकड़ी की छत मेरे डेटा फ्रेम के लिए काम नहीं करते हैं। मैं pyarrow का उपयोग जारी रखने जा रहा हूं। हालांकि मैं अचार (कोई संपीड़न नहीं) के साथ पूरक होगा। जब कैश स्टोर पायरो और अचार क्रमबद्ध रूपों को लिखना है। जब कैश फ़ॉलबैक से अचार तक पढ़ना अगर पायरो डिसेरिएलिसेशन विफल हो जाता है।