অন্যান্য ফর্ম্যাটগুলির সাথে তুলনা করে তোরণ বিন্যাসের কী কী?


136

অ্যাপাচি পারকুয়েটের বৈশিষ্ট্যগুলি হ'ল:

  • স্ব-বর্ণনা
  • কলামার ফর্ম্যাট
  • ভাষা স্বাধীন

অভ্র, সিকোয়েন্স ফাইলস, আরসি ফাইল ইত্যাদির তুলনায় আমি ফর্ম্যাটগুলির একটি ওভারভিউ চাই। আমি ইতিমধ্যে পড়েছি: ইমডালা হ্যাডোপ ফাইল ফর্ম্যাটগুলির সাথে কীভাবে কাজ করে , এটি ফর্ম্যাটগুলিতে কিছুটা অন্তর্দৃষ্টি দেয় তবে আমি জানাতে চাই যে এই ফর্ম্যাটগুলির প্রতিটিটিতে কীভাবে ডেটা অ্যাক্সেস এবং স্টোরেজ হয়। অন্য পক্ষের তুলনায় কীভাবে কাঠামোর একটি সুবিধা রয়েছে?


2
এই উপস্থাপনাটিতে একটি দুর্দান্ত সংক্ষিপ্তসার পাওয়া যাবে: লিঙ্ক
ডোমিনিক

@ ani-menon লিঙ্কটি মারা গেছে।
সাজ্জাদ হোসেন

আপডেট করেছেন
আনি মেনন

উত্তর:


282

আমি মনে করি যে মূল পার্থক্যটি আমি বর্ণনা করতে পারি সেগুলি রেকর্ড ওরিয়েন্টেড বনাম কলাম ওরিয়েন্টেড ফর্ম্যাটগুলির সাথে সম্পর্কিত। রেকর্ড ওরিয়েন্টেড ফর্ম্যাটগুলি হ'ল আমরা সকলেই অভ্যস্ত - পাঠ্য ফাইল, সিএসভি, টিএসভি এর মতো সীমিত বিন্যাস। এভ্রো তাদের তুলনায় সামান্য শীতল কারণ এটি সময়ের সাথে সাথে স্কিমা পরিবর্তন করতে পারে, যেমন রেকর্ড থেকে কলামগুলি যুক্ত করা বা অপসারণ করতে। বিভিন্ন বিন্যাসের অন্যান্য কৌশল (বিশেষত সংকোচন সহ) কোনও ফর্ম্যাটকে বিভক্ত করা যায় কিনা তা জড়িত - অর্থাৎ, আপনি ডেটাসেটের যে কোনও জায়গা থেকে রেকর্ডের একটি ব্লক পড়তে পারেন এবং এখনও এটির স্কিমা জানতে পারবেন? তবে এখানে যেমন পারকুইটের মতো কলামার ফর্ম্যাটগুলিতে আরও বিশদ।

কাঠের কাঠামো এবং অন্যান্য কলামার ফর্ম্যাটগুলি খুব সাধারণভাবে একটি সাধারণ হডোপ পরিস্থিতি পরিচালনা করে। আপনি সুনির্দিষ্টভাবে নকশাকৃত রিলেশনাল ডাটাবেসে আশা করবেন তার চেয়ে অনেক বেশি কলাম থাকা সারণী (ডেটাসেট) থাকা সাধারণ বিষয় - একশ বা দু'শ কলাম অস্বাভাবিক নয়। এটি তাই কারণ আমরা প্রায়শই হ্যাডোপকে সম্পর্কিত সম্পর্কিত ফর্ম্যাটগুলি থেকে ডেটা অস্বীকৃতি হিসাবে স্থান হিসাবে ব্যবহার করি - হ্যাঁ, আপনি প্রচুর পুনরাবৃত্তি মান এবং অনেকগুলি টেবিল সমস্ত একক একেই সমতল করে পান। তবে সমস্ত যোগদানগুলি শেষ হয়ে যাওয়ার কারণে এটি অনুসন্ধান করা অনেক সহজ হয়ে যায়। অন্যান্য সুবিধাগুলি যেমন সময়কালীন তথ্য ধরে রাখা। সুতরাং যাইহোক, কোনও টেবিলে কলামের নৌকা বোঝাই রাখা সাধারণ।

ধরা যাক এখানে ১৩২ টি কলাম রয়েছে এবং সেগুলির কয়েকটি সত্যিই দীর্ঘ পাঠ্য ক্ষেত্র, প্রতিটি পৃথক কলাম একের পর এক অনুসরণ করে এবং রেকর্ডে 10K ব্যবহার করতে পারে।

এসকিউএল স্ট্যান্ডপয়েন্টের সাহায্যে এই টেবিলগুলি জিজ্ঞাসা করা সহজ, আপনি সাধারণ hundred শত প্লাস কলামগুলির মধ্যে কয়েকটি রেকর্ডের উপর ভিত্তি করে রেকর্ডের কিছু পরিসীমা পেতে চাইলে সাধারণ। উদাহরণস্বরূপ, আপনি বিক্রয়> $ 500 সহ গ্রাহকদের জন্য ফেব্রুয়ারি এবং মার্চ মাসে সমস্ত রেকর্ড চাইবেন।

এক সারি বিন্যাসে এটি করার জন্য ক্যোয়ারীতে ডেটাসেটের প্রতিটি রেকর্ড স্ক্যান করা দরকার। প্রথম সারিটি পড়ুন, ক্ষেত্রগুলিতে (কলাম) রেকর্ডটি বিশ্লেষণ করুন এবং তারিখ এবং বিক্রয় কলামগুলি পান, যদি এটি শর্তটি সন্তুষ্ট করে তবে আপনার ফলাফলটিতে এটি অন্তর্ভুক্ত করুন। পদ্ধতি পুনরাবৃত্তি করুন। আপনার যদি 10 বছরের (120 মাস) ইতিহাস থাকে তবে আপনি কেবলমাত্র এক মাসের 2 টি খুঁজে পেতে প্রতিটি রেকর্ড পড়ছেন। অবশ্যই এটি বছর এবং মাসে কোনও পার্টিশন ব্যবহারের দুর্দান্ত সুযোগ, তবে তবুও, আপনি কেবল গ্রাহকের বিক্রয়> 500 ডলার কিনা তা খুঁজে পেতে সেই দুই মাসের জন্য প্রতিটি রেকর্ড / সারি 10 কে পড়ছেন এবং পার্স করছেন।

একটি কলামার ফর্ম্যাটে, রেকর্ডের প্রতিটি কলাম (ক্ষেত্র) তার ধরণের অন্যান্যদের সাথে সঞ্চিত থাকে, যা ডিস্কের বিভিন্ন ব্লক জুড়ে ছড়িয়ে পড়ে - একসাথে বছরের জন্য কলাম, একসাথে এক মাসের জন্য কলাম, গ্রাহক কর্মচারী হ্যান্ডবুকের জন্য কলাম (বা অন্য দীর্ঘ পাঠ্য) এবং অন্যান্য যেগুলি এই রেকর্ডগুলিকে এতগুলি বিশাল করে তোলে এটি সমস্তই ডিস্কে তাদের নিজস্ব পৃথক স্থানে এবং অবশ্যই একসাথে বিক্রয়ের জন্য কলামগুলি। ওয়েল হেক, তারিখ এবং মাসগুলি সংখ্যা এবং তাই বিক্রয়ও থাকে - সেগুলি কেবল কয়েকটি বাইট। কোন রেকর্ডগুলি আমাদের কোয়েরির সাথে মিলেছে তা নির্ধারণ করতে আমাদের কেবল প্রতিটি রেকর্ডের জন্য কয়েকটি বাইট পড়তে হয়েছিল, তা কি দুর্দান্ত হবে না? কলামার স্টোরেজ উদ্ধারে!

এমনকি কোনও পার্টিশন ছাড়াই, আমাদের ক্যোয়ারীটি পূরণের জন্য প্রয়োজনীয় ছোট ছোট ক্ষেত্রগুলি স্ক্যান করা অত্যন্ত দ্রুত - এগুলি সমস্ত রেকর্ড অনুসারে এবং একই আকার অনুসারে থাকে, সুতরাং ডিস্কটি অন্তর্ভুক্ত রেকর্ডগুলির জন্য অনেক কম ডেটা চেক করার চেষ্টা করে। সেই কর্মচারী হ্যান্ডবুক এবং অন্যান্য দীর্ঘ পাঠ্য ক্ষেত্রগুলি পড়ার দরকার নেই - কেবল এগুলি উপেক্ষা করুন। সুতরাং, সারিগুলির পরিবর্তে একে অপরের সাথে কলামগুলি গ্রুপ করে আপনি প্রায় সর্বদা কম ডেটা স্ক্যান করতে পারেন। উইন!

তবে অপেক্ষা করুন, এটি আরও ভাল হয়। যদি আপনার ক্যোয়ারিতে কেবলমাত্র সেই মানগুলি এবং আরও কয়েকটি জানতে হয় (আসুন 132 কলামগুলির মধ্যে 10 বলুন) এবং সেই কর্মচারী হ্যান্ডবুক কলামটি যত্ন না করে একবার ফিরে আসার জন্য সঠিক রেকর্ডগুলি বেছে নিলে এখন কেবল যেতে হবে আমাদের ডেটাসেটে 132 এর অন্যান্য 122 টি উপেক্ষা করে ফলাফলগুলি রেন্ডার করতে 10 টি কলামে ফিরে এসেছিল। আবার আমরা প্রচুর পড়া বাদ দিই।

(দ্রষ্টব্য: এই কারণে, কলামার ফর্ম্যাটগুলি সরল ট্রান্সফর্মেশনগুলি করার সময় স্বল্প পছন্দ হয়, উদাহরণস্বরূপ, আপনি যদি দুটি টেবিলকে একটি বড় (জীর্ণ) ফলাফলের সাথে যুক্ত করে থাকেন তবে আপনি একটি নতুন টেবিল হিসাবে সংরক্ষণ করছেন, উত্স যাইহোক যাইহোক পুরোপুরি স্ক্যান হতে চলেছে, তাই পড়ার পারফরম্যান্সে খুব বেশি সুবিধা নেই এবং কারণ কলামার ফর্ম্যাটগুলিতে স্টাফগুলি যেখানে রয়েছে সে সম্পর্কে আরও বেশি মনে রাখা দরকার, তারা অনুরূপ সারি বিন্যাসের চেয়ে বেশি মেমরি ব্যবহার করে)।

কলামার আরও একটি সুবিধা: তথ্য চারদিকে ছড়িয়ে পড়ে। একটি একক রেকর্ড পেতে, আপনার 132 জন কর্মী প্রতিটি 132 ব্লকের ডেটাতে 132 জন কর্মী / থেকে 132 টি বিভিন্ন স্থান থেকে ডেটা পড়তে (এবং লিখতে) রাখতে পারেন। সমান্তরাল জন্য হ্যাঁ!

এবং এখন ক্লিঞ্জারটির জন্য: যখন পুনরাবৃত্তি নিদর্শনগুলি খুঁজে পাওয়া যায় তখন সংক্ষেপণ অ্যালগরিদমগুলি আরও ভাল কাজ করে। আপনি কম্প্রেস পারে AABBBBBBCCCCCCCCCCCCCCCCযেমন 2A6B16Cকিন্তু ABCABCBCBCBCCCCCCCCCCCCCCহিসাবে ক্ষুদ্র পেতে হবে (ভাল, আসলে, এই ক্ষেত্রে এটি, কিন্তু আমাকে বিশ্বাস :-))। তাই আবারও কম পড়া। এবং লিখতেও।

সুতরাং আমরা সাধারণ প্রশ্নের উত্তর দেওয়ার জন্য অনেক কম ডেটা পড়ি, সমান্তরালভাবে পড়া এবং লেখার পক্ষে এটি দ্রুততর এবং সংক্ষেপণ আরও ভাল কাজ করার ঝোঁক।

আপনার ইনপুট দিকটি বড় হলে কলামার দুর্দান্ত হয় এবং আপনার আউটপুট একটি ফিল্টার করা উপসেট হয়: বড় থেকে ছোট পর্যন্ত দুর্দান্ত। যখন ইনপুট এবং ফলাফলগুলি সমান হয় তখন ততটা উপকারী হয় না।

তবে আমাদের ক্ষেত্রে, ইমালা আমাদের পুরানো এইচআইভি প্রশ্নগুলি নিয়েছিল যা 5, 10, 20 বা 30 মিনিটের মধ্যে চলে এবং কয়েক সেকেন্ড বা এক মিনিটে বেশিরভাগ সমাপ্ত হয়েছিল।

আশা করি এটি আপনার প্রশ্নের কমপক্ষে অংশের উত্তরটি সহায়তা করে!


7
চমৎকার। ধন্যবাদ. এটি একটি খুব দরকারী সংক্ষিপ্তসার যা অনেকগুলি অ্যাপাচি প্রকল্প ডক্স থেকে অনুপস্থিত .. আপনি উল্লেখ করেছেন: "ছোট ক্ষেত্রগুলি ... সমস্ত রেকর্ড অনুসারে সাজানো থাকে"। ধরুন আমার কাছে ইউজারিডের একটি সাধারণ টেবিল রয়েছে: দীর্ঘ এবং বয়স: পূর্ববর্তী, এবং কিছু বয়সের মধ্যে থাকা সমস্ত ব্যবহারকারীকে সন্ধান করতে চাই। এখানে আমার দুটি কলাম আছে। অর্ডারিংয়ের জন্য সূচীটি কখন, বা সমস্ত কলামগুলি দক্ষতার সাথে সূচকযোগ্য তা নির্দিষ্ট করার দরকার আছে কি?
ব্যবহারকারী 48956

1
আমি যদি টাইমসারিগুলির জন্য parquet ব্যবহার করি? বেশ কয়েকটি কলাম (100+), প্রতিটি কলামে বিভিন্ন ফ্রিকোয়েন্সি (100hz থেকে 0.25 Hz) সহ একটি সেন্সর ডেটা। এটি একটি স্মার্ট সিদ্ধান্ত হবে?
guilhermecgs

53

অভ্র হ্যাডোপের জন্য একটি সারি-ভিত্তিক স্টোরেজ ফর্ম্যাট।

পরকুইট হ্যাডোপের জন্য কলাম ভিত্তিক স্টোরেজ ফর্ম্যাট।

যদি আপনার ব্যবহারের ক্ষেত্রে সাধারণত প্রতিটি ক্যোয়ারিতে পর পর সমস্ত ক্ষেত্র স্ক্যান করে বা পুনরুদ্ধার করা হয় তবে অভ্র সাধারণত সেরা পছন্দ।

যদি আপনার ডেটাসেটে অনেকগুলি কলাম থাকে এবং আপনার ব্যবহারের ক্ষেত্রে সাধারণত পুরো রেকর্ডের চেয়ে সেই কলামগুলির একটি সাবসেটের সাথে কাজ করা জড়িত থাকে, পারকুইট সেই ধরণের কাজের জন্য অনুকূলিত হয়।

উৎস


26

টমের উত্তরটি বেশ বিশদ এবং অবসন্ন তবে আপনার এই সাধারণ অধ্যয়নেও আগ্রহী হতে পারে অলস্টেট বীমাতে পার্কিট বনাম অভ্র সম্পর্কে , সংক্ষিপ্তসারটি এখানে:

"সামগ্রিকভাবে, পরকুইট প্রতিটি পরীক্ষায় [অভ্রের তুলনায়] এর মতোই বা আরও ভাল ফলাফল দেখিয়েছিল Par অভ্রের তুলনায় পার্কুয়েটের জন্য কম ডেটা suspected সন্দেহ করা হয়েছিল, পুরো ডেটাসেট প্রক্রিয়াকরণের সময় অভ্র ভাল পারফরম্যান্স করতে পারেনি। "

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.