هناك ما مجموعه سبع مشاكل خوارزمية كلاسيكية هنا (أضعها في 7 مجلدات) ؛
Q1 و Q2 هما موضوعان يتعلقان بمعالجة البيانات الضخمة ؛
الموضوعات الخمسة الأخرى هي:
1.DBScan clustering algorithm,
2.simple dynamic programming,
3.classic sorting algorithm,
4.full arrangement of strings,
5.calculation of tf-idf
هناك سبع مشاكل خوارزمية كلاسيكية هنا (أضعها في 7 مجلدات على التوالي) ؛
Q1 و Q2 هما سؤالان متعلقان بمعالجة البيانات الكبيرة ؛
الأسئلة الخمسة الأخرى هي:
1.DBScan聚类算法、
2.简单的动态规划、
3.经典的排序算法、
4.字符串的全排列、
5.tf-idf的计算
فيما يلي وصف للمستندات ذات الصلة لـ Q1 و Q2
فيما يلي الوثائق ذات الصلة لـ Q1 و Q2
1. وصف السؤال.
2. الأفكار.
3. البيئة.
4. تنفيذ الكود.
في الأيام القليلة الماضية ، قابلت مهندسي الخوارزمية وواجهت أسئلة اختبار كتابي جيدة بشكل خاص. فيما يلي الأفكار والرموز التي قدمتها. قد لا تكون الحل الأفضل ، لكنها أيضًا نتائج دراستي والتفكير خلال اليومين الماضيين.
من المعروف أن الجدول يسجل عدد الإعجابات لكل مذكرات ، ويستخدم لغة برمجة تعرفها لحساب عدد الإعجابات الخاصة بالمذكرات P90. تعريف p90: افترض p90 = n ، ثم عدد الإعجابات في 90 ٪ من اليوميات أقل من أو يساوي n. ملاحظة: لا يتم فرز البيانات الأصلية ، ويصل عدد اليوميات إلى 1 مليار
هيكل الجدول كما يلي:
note_id, like_count
1, 4
2, 6
..., ...
مثال:
1. عدد الإعجابات لـ 10 يوميات هو: 1 ، 2 ، 2 ، 3 ، 3 ، 4 ، 5 ، 5 ، 6 ، 50 ، ثم P90 = 6
2. عدد النقرات لـ 9 يوميات هو: 1 ، 2 ، 2 ، 3 ، 3 ، 4 ، 5 ، 5 ، 6 ، ثم p90 = 5.5
ملف يحتوي على 10 مليارات نص ، واحد لكل سطر ، ودرجة كل نص لا تتجاوز 1024 ، وقد يكون هناك نص مكرر. استخدم لغة البرمجة التي تعرفها للعثور على أكثر من 10،000 نص ، والظروف هي كما يلي:
1. لا يوجد تكرار بين النصوص.
2. إذا تم الاحتفاظ بنص في النتيجة ، فيجب الاحتفاظ بجميع النصوص بنفس الدرجة التي يتم الاحتفاظ بها في النص في النتيجة.
الوصف: يقوم الفرز الخارجي بتنفيذ حساب قيمة P90 للمذكرات مثل الجدول
1.读取大文件表,维护一个数据总量nTotal
2.分为n个小文件(第一次内部排序<采用优化后的快排>;注意:内存量 大于等于 小文件的数据量大小)
3.采用外部排序排序每个小文件
4.合并所有小文件并输出到一个新的文件(依次读取每个文件从第一行到末尾,比较获取极(大/小)值,存入新文件)
5.最终获得一个排序好的大文件
6.通过排序后的大文件获取p90的位置 通过文件指针偏移读取具体的p90数据
注:小文件倒序排列,点击数多的排在前面
الوصف: يمكن لـ Pandas معالجة الملفات بـ <= 5tb ، واستخدام Pandas مباشرة لمعالجة الملفات الكبيرة الفائقة
1.读入文件为DataFrame:reader
2.去重
3.新增文本长度列和索引列
4.按文本长度列分组(1024个分组)并返回每个分组的元素个数,产生新的DataFrame:group
5.通过group表返回top_n文本的最小长度
6.在reader大表中按条件查找行,产生DataFrame:result
7.通过result表返回符合条件的top_n文本
الوصف: خريطة التجزئة
1.读取大文件表,生成hash key&value 存入1024个小文件(采用桶排序/计数排序,注意value不是字符串内容而是记录所在大文件中的行数)
1.1 key为hash值(采用md5<散列化>)
1.2 value为所在大文件中的行数
2.根据顺序依次从大到小读出topN
3.获取topN在文件中的行数并读取大文件表获取内容
4.循环输出topN
md5码:128位,16个字节
بيثون 3.6
pip install tqdm
pip install pandas
وظيفة الإدخال: Q1/get_p90.py تنفيذ:
cd Q1
python get_p90.py
وظيفة الإدخال: Q2/get_top_1w_pandas.py تنفيذ:
cd Q2
python get_top_1w_pandas.py
وظيفة الإدخال: Q2/get_top_1w_hash.py تنفيذ:
cd Q2
python get_top_1w_hash.py