سؤال

أنا أستخدم حاليًا وظائف hadoop Mapreduce مع SequenceFiles للكتابات.يتم استخدام نفس النوع القابل للكتابة للتسلسل أيضًا في الأجزاء غير المرتبطة بـ hadoop من النظام.

يصعب الحفاظ على هذه الطريقة، ويرجع ذلك أساسًا إلى عدم وجود مخطط والحاجة إلى المعالجة اليدوية لتغييرات الإصدار.

يبدو أن Apache avro يعالج هذه المشكلات.

المشكلة هي أنه أثناء الترحيل سيكون لدي بيانات في كلا التنسيقين.هل هناك طريقة بسيطة للتعامل مع الهجرة؟

هل كانت مفيدة؟

المحلول

بشكل عام، لا يوجد ما يمنعك من استخدام بيانات Avro وSequenceFiles بالتبادل.استخدم تنسيق InputFormat الضروري لنوع البيانات التي تحتاجها، وللإخراج، من المنطقي بالطبع استخدام تنسيقات Avro كلما كان ذلك عمليًا.إذا كانت مدخلاتك تأتي بتنسيقات مختلفة، فقم بإلقاء نظرة عليها مدخلات متعددة.بشكل أساسي، لا يزال يتعين عليك تنفيذ مصممي خرائط منفصلين، ولكن هذا أمر متوقع نظرًا لاختلاف مفتاح/قيمة إدخال الخريطة.

الانتقال إلى أفرو خطوة حكيمة.إذا كان لديك الوقت والأجهزة، فقد يكون من المفيد تحويل بياناتك بشكل صريح من SequenceFile إلى Avro على الفور.يمكنك استخدام أي لغة يدعمها Avro والذي يحدث أيضًا لدعم SequenceFiles للقيام بذلك.من المؤكد أن Java تفعل ذلك (بشكل واضح)، لكن Pig أيضًا مفيد جدًا للقيام بذلك.

يتمتع مشروع PiggyBank الذي ساهم به المستخدم بوظيفة قراءة SequenceFile، وبعد ذلك يتعلق الأمر ببساطة باستخدام AvroStorage من نفس مشروع PiggyBank مع مخطط Avro المناسب للحصول على ملف Avro الخاص بك.

إذا كان Pig فقط يدعم تحميل مخططات Avro من الملف ..!إذا كنت تستخدم Pig، فسيتعين عليك للأسف إنشاء نصوص برمجية تحتوي بشكل صريح على مخطط Avro، الأمر الذي قد يكون مزعجًا بعض الشيء.

نصائح أخرى

لم أجربه بنفسي، لكن ربما أستخدمه AvroSequenceFile من شأنه أن يساعد الشكل.انها مجرد المجمع حولها SequenceFile لذلك من الناحية النظرية يجب أن تكون قادرًا على كتابة البيانات باللغتين القديمتين SequenceFile الشكل وكذلك الجديد الخاص بك Avro التنسيق الذي من شأنه أن يجعل عملية الترحيل أسهل.

هنا معلومات اكثر حول هذا التنسيق.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top