هذا الدليل متوافق مع ClickHouse Cloud ومع ClickHouse المُستضاف ذاتيًا بالإصدار v23.5+.
يوضح هذا الدليل كيفية ترحيل البيانات من BigQuery إلى ClickHouse.
نبدأ بتصدير جدول إلى خدمة تخزين الكائنات من Google (GCS)، ثم نستورد تلك البيانات إلى ClickHouse Cloud. يجب تكرار هذه الخطوات لكل جدول تريد تصديره من BigQuery إلى ClickHouse.
كم سيستغرق تصدير البيانات إلى ClickHouse؟
تعتمد مدة تصدير البيانات من BigQuery إلى ClickHouse على حجم مجموعة البيانات لديك. وللمقارنة، يستغرق تصدير مجموعة بيانات Ethereum العامة بحجم 4TB من BigQuery إلى ClickHouse باستخدام هذا الدليل حوالي ساعة.
| الجدول | عدد الصفوف | الملفات المُصدَّرة | حجم البيانات | التصدير من BigQuery | زمن الـ Slot | الاستيراد إلى ClickHouse |
|---|---|---|---|---|---|---|
| الكتل | 16,569,489 | 73 | 14.53GB | 23 secs | 37 min | 15.4 secs |
| المعاملات | 1,864,514,414 | 5169 | 957GB | 1 min 38 sec | 1 day 8hrs | 18 mins 5 secs |
| التتبعات | 6,325,819,306 | 17,985 | 2.896TB | 5 min 46 sec | 5 days 19 hr | 34 mins 55 secs |
| العقود | 57,225,837 | 350 | 45.35GB | 16 sec | 1 hr 51 min | 39.4 secs |
| الإجمالي | 8.26 billion | 23,577 | 3.982TB | 8 min 3 sec | > 6 days 5 hrs | 53 mins 45 secs |
تصدير بيانات الجدول إلى GCS
في هذه الخطوة، نستخدم مساحة عمل BigQuery SQL لتنفيذ أوامر SQL. في المثال أدناه، نُصدّر جدولًا في BigQuery باسم mytable إلى حاوية GCS باستخدام عبارة EXPORT DATA.
DECLARE export_path STRING;
DECLARE n INT64;
DECLARE i INT64;
SET i = 0;
-- We recommend setting n to correspond to x billion rows. So 5 billion rows, n = 5
SET n = 100;
WHILE i < n DO
SET export_path = CONCAT('gs://mybucket/mytable/', i,'-*.parquet');
EXPORT DATA
OPTIONS (
uri = export_path,
format = 'PARQUET',
overwrite = true
)
AS (
SELECT * FROM mytable WHERE export_id = i
);
SET i = i + 1;
END WHILE;في الاستعلام أعلاه، نُصدِّر جدول BigQuery الخاص بنا إلى تنسيق بيانات Parquet. ولدينا أيضًا الحرف * في المعلمة uri. وهذا يضمن تقسيم الناتج إلى عدة ملفات، مع لاحقة رقمية متزايدة، إذا تجاوز التصدير 1GB من البيانات.
لهذا النهج عدد من المزايا:
- تتيح Google تصدير ما يصل إلى 50TB يوميًا إلى GCS مجانًا. ولا يدفع المستخدمون سوى مقابل تخزين GCS.
- تُنتج عمليات التصدير ملفات متعددة تلقائيًا، مع تقييد كل ملف بحد أقصى قدره 1GB من بيانات الجدول. وهذا مفيد لـ ClickHouse لأنه يتيح تنفيذ عمليات الاستيراد بالتوازي.
- يُعد Parquet، بوصفه تنسيقًا موجَّهًا بالأعمدة، تنسيقًا أفضل لتبادل البيانات لأنه مضغوط بطبيعته، كما أنه أسرع بالنسبة إلى BigQuery عند التصدير وClickHouse عند تنفيذ الاستعلامات
استيراد البيانات إلى ClickHouse من GCS
بمجرد اكتمال التصدير، يمكننا استيراد هذه البيانات إلى جدول في ClickHouse. يمكنك استخدام وحدة تحكم ClickHouse SQL أو clickhouse-client لتنفيذ الأوامر أدناه.
يجب أولاً إنشاء الجدول في ClickHouse:
-- If your BigQuery table contains a column of type STRUCT, you must enable this setting
-- to map that column to a ClickHouse column of type Nested
SET input_format_parquet_import_nested = 1;
CREATE TABLE default.mytable
(
`timestamp` DateTime64(6),
`some_text` String
)
ENGINE = MergeTree
ORDER BY (timestamp);بعد إنشاء الجدول، فعِّل الإعداد parallel_distributed_insert_select إذا كان لديك عدة نُسخ متماثلة من ClickHouse في الـcluster لتسريع عملية التصدير. وإذا كانت لديك عقدة ClickHouse واحدة فقط، فيمكنك تخطي هذه الخطوة:
SET parallel_distributed_insert_select = 1;أخيرًا، يمكننا إدراج البيانات من GCS في جدول ClickHouse باستخدام أمر INSERT INTO SELECT، الذي يُدرج البيانات في جدول استنادًا إلى نتائج استعلام SELECT.
لاسترجاع البيانات من أجل INSERT، يمكننا استخدام دالة s3Cluster لجلب البيانات من حاوية GCS، لأن GCS متوافق مع Amazon S3. إذا كانت لديك عقدة ClickHouse واحدة فقط، فيمكنك استخدام دالة الجدول S3 بدلًا من الدالة s3Cluster.
INSERT INTO mytable
SELECT
timestamp,
ifNull(some_text, '') AS some_text
FROM s3Cluster(
'default',
'https://storage.googleapis.com/mybucket/mytable/*.parquet.gz',
'<ACCESS_ID>',
'<SECRET>'
);يمثل كلٌّ من ACCESS_ID وSECRET المستخدمَين في الاستعلام أعلاه مفتاح HMAC المرتبط بحاوية GCS الخاصة بك.
اختبار نجاح تصدير البيانات
لاختبار ما إذا كانت بياناتك قد أُدرجت بشكل صحيح، ما عليك سوى تنفيذ استعلام SELECT على جدولك الجديد:
SELECT * FROM mytable LIMIT 10;لتصدير المزيد من جداول BigQuery، ما عليك سوى تكرار الخطوات أعلاه لكل جدول إضافي.
لمزيد من القراءة والدعم
إلى جانب هذا الدليل، نوصي أيضًا بقراءة تدوينة المدونة التي توضّح كيفية استخدام ClickHouse لتسريع BigQuery وكيفية التعامل مع عمليات الاستيراد المتزايدة.
إذا كنت تواجه مشكلات في نقل البيانات من BigQuery إلى ClickHouse، فلا تتردد في التواصل معنا عبر support@clickhouse.com.