Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

描述:每个 iterator 取1个 List,找到每个 List 的最大字典序的 sensor,组成集合 S,本次合并从头开始合并到 S 中最小字典序的 sensor,直到所有都合并完 sensor_lex_min_lex_min,直到所有都合并完 。并从 List 中清除已合并的 sensor,如果此 List 消耗完,获取下一个 Lst

优势:每次至少会消耗完一个 file 的一个 List


  • getNextSensors(List<ChunkMetadataListIterator> iterators)



  • getNextSensors(List<ChunkMetadataListIterator> iterators)



第一轮:file1(s1,s2)+file2(s1,s3)+file3(s1,s2)  → (s1,s2)→ S=S=(s2, s3),最小字典序 sensor_lex_min 是 s2 → 从 s2, s3),最小字典序 sensor_lex_min 是 s2 → 从 s1 合并到 合并到 s2

第二轮:file1(s3)+file2(s3)+file3(s3,s5)  →   → S=S=(s3, s5, s5),最小字典序 sensor_lex_min 是 s3 →  从 s3 合到 s3,最小字典序 sensor_lex_min 是 s3 →  从 s3 合到 s3

第三轮:file3(s5) → S=S=(s5),最小字典序 sensor_lex_min 是 s5 → 从 s5 合到 s5,最小字典序 sensor_lex_min 是 s5 → 从 s5 合到 s5




反序列化Page合并算法

  • 通过各自文件的reader有序把数据读出并整理出对应的time-value列表
  • 遍历上述的time-value列表,将数据写入新的ChunkWriter
  • 判断限流
  • ChunkWriter写入新文件

...

完全合并 则是在乱序合并时重写整个顺序文件,IO和合并性能较低,但能获取一个整理完全的顺序文件


重新设计整个合并流程,舍弃 原地合并 只保留 完全合并

外部并行

执行拆分流程:device->seqFile→sensor


文件选择


任务执行

输入一组乱序文件U,以及一组顺序文件S,最大同时合并的时间序列数量为n,单个chunk的点数阈值tpt,是否进行Full Merge

...