আপনি যদি ইতিমধ্যে সিদ্ধান্ত না নিয়ে থাকেন তবে আমি এগিয়ে গিয়ে আপনার ডেটার জন্য অভ্র স্কিমা লিখব। এটি শেষ হয়ে গেলে অভ্র কনটেইনার ফাইল এবং parquet ফাইলগুলির মধ্যে বাছাই করা প্রায় সোজা হয়ে যায় যেমন,
job.setOutputFormatClass(AvroKeyOutputFormat.class);
AvroJob.setOutputKeySchema(MyAvroType.getClassSchema());
জন্য
job.setOutputFormatClass(AvroParquetOutputFormat.class);
AvroParquetOutputFormat.setSchema(job, MyAvroType.getClassSchema());
পারকুইট ফর্ম্যাটটি রাইটিং সাইডটিতে আরও কিছুটা গণনামূলকভাবে নিবিড় বলে মনে হচ্ছে - যেমন, তথ্য অর্ডার করার জন্য বাফারিংয়ের জন্য র্যামের প্রয়োজন হয় এবং সিপিইউ ইত্যাদির প্রয়োজন হয় তবে এটি আই / ও, স্টোরেজ এবং ট্রান্সফার ব্যয় হ্রাস করতে হবে এবং দক্ষতার জন্য তৈরি করতে হবে বিশেষত এসকিউএল-জাতীয় (যেমন, মধুশালী বা স্পার্কএসকিউএল) কোয়েরিগুলি পড়ে যেগুলি কেবল কলামগুলির একটি অংশকে সম্বোধন করে।
একটি প্রকল্পে, আমি পরকীট থেকে অভ্র পাত্রে ফিরে এসেছি কারণ স্কিমাটি খুব বিস্তৃত এবং নেস্টেড ছিল (কিছুটা হায়ারার্কিকাল অবজেক্ট-ওরিয়েন্টেড ক্লাস থেকে প্রাপ্ত) এবং এর ফলে পেরকেট কলামের সংখ্যা ছিল। পরিবর্তে, আমাদের সারি গোষ্ঠীগুলি সত্যই প্রশস্ত এবং অগভীর ছিল যার অর্থ এটি ছিল যে আমরা প্রতিটি দলের শেষ কলামে কয়েকটি সংখ্যক সারি প্রক্রিয়া করার আগে এটি চিরতরে নিয়ে গেছে।
পারকুইটটি আরও সাধারণকরণ / বুদ্ধিমান ডেটার জন্য এখনও ব্যবহার করার আমার খুব বেশি সুযোগ হয়নি তবে আমি বুঝতে পারি যে যদি এটি ভালভাবে ব্যবহার করা হয় তবে এটি পারফরম্যান্সের উল্লেখযোগ্য উন্নতির জন্য অনুমতি দেয়।