الانتقال إلى المحتوى الرئيسي

الوصف

ArrowStream هو تنسيق Apache Arrow في “وضع البث”. وقد صُمم لمعالجة البيانات المتدفقة داخل الذاكرة.

مثال للاستخدام

في المثال أدناه، نستخدم مجموعة البيانات forex المتاحة في ClickHouse SQL playground. يمكنك الاتصال بها عن بُعد باستخدام clickhouse-client مع المضيف sql-clickhouse.clickhouse.com والمستخدم demo (من دون كلمة مرور). يوجد الجدول forex في قاعدة البيانات forex، لذا نحدده كقاعدة البيانات الافتراضية:
يخزّن الجدول forex أسعار صرف العملات. ويمكننا فحص حجمه ومدى كفاءة ضغطه على القرص عبر الاستعلام عن system.columns:
Query
Response
على خلاف تنسيق Arrow في “وضع الملف”، الذي يتطلب اكتمال النتيجة بالكامل قبل أن يمكن قراءتها، يُرسَل ArrowStream على شكل تسلسل من دفعات السجلات يمكن للمستهلك قراءتها تدريجيًا فور وصولها. وهذا يجعله مناسبًا جدًا لبث نتيجة استعلام مباشرةً إلى أداة تصور أو تحليلات دون الحاجة أولًا إلى تخزين مجموعة البيانات بالكامل بعد احتسابها. لبث النتيجة، أرسل الاستعلام عبر واجهة HTTP الخاصة بـ ClickHouse باستخدام طلب POST، واقرأ الاستجابة على أنها دفق Arrow. نعطّل ضغط خرج Arrow عبر الإعداد output_format_arrow_compression_method لكي تتمكن الجهات المستهلكة من فك ترميز الدفعات مباشرةً عند استلامها. خرج ArrowStream هو بيانات ثنائية خام، لذا بدلًا من طباعته في الطرفية نمرّره عبر pipe إلى مستهلك. وهذا الدفق ذاتي الوصف (يحمل المخطط الخاص به)، لذلك نمرّره هنا مباشرةً إلى clickhouse-local، الذي يقرأ الدفعات الواردة باستخدام --input-format ArrowStream ويستعلم عنها كأنها جدول. جدول forex كبير، لذا قيّدنا الاستعلام البعيد باستخدام شرط WHERE وLIMIT لإبقاء هذا المثال صغيرًا:
Response
يمكن لأي عميل يدعم Arrow استهلاك نفس الدفق تدريجيًا، إذ يقرأه على دفعات بدلًا من تخزين النتيجة كاملةً مؤقتًا. على سبيل المثال، باستخدام مكتبة Apache Arrow لـ JavaScript، فإن RecordBatchReader يُرجع كل دفعة من السجلات بمجرد بثّها من الخادم:
للاطلاع على شرح كامل خطوة بخطوة لكيفية بث بيانات ArrowStream من ClickHouse إلى تصور آني باستخدام Perspective، راجع مقالة المدونة بث تصورات آنية باستخدام ClickHouse وApache Arrow وPerspective.

إعدادات التنسيق

يستخدم ArrowStream إعدادات التنسيق نفسها المستخدمة في تنسيق Arrow.
آخر تعديل في ٢٥ يونيو ٢٠٢٦