<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Skynet

    ---------- ---------- 我的新 blog : liukaiyi.cublog.cn ---------- ----------

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      112 Posts :: 1 Stories :: 49 Comments :: 0 Trackbacks
    雖然 mysql,oracle 和  Berkeley DB,sqlite3 等數據庫已經很好
     但是當我初略學習下 數據挖掘方面的一些知識發現,關系數據庫遠遠不夠來存儲,查詢 etl 后的數據

    比如:我希望原始日志數據進行某一字段的排序,是不是很簡單 。
      有人說  - 數據導入數據庫 load into table ... , select order by 。之
      還有人說 - linux sort -n...

    恩!很好,下面我們對大小為 1TB 的數據開始進行這個簡單的操作   -- 傻眼了 !!
       關于挖掘 - TB 級別的數量在我目前學習挖掘不到半年,就遇到過3-4次之多

    解決辦法:
    對于這個問題 - 我現在希望能有個 大的鏈表 - (大到內存裝不下)
      鏈表中的struct 結構為 :
       >> 排序屬性文件歸屬
       >> 排序屬性整條數據在文件中的 起始位置 - 結束位置
       >> 在排序中的排位 ( 鏈表結構,只記入比自己小的 屬性在此鏈表的位置  )


    比如 :
      1. 文件1內容 =>
    說明:
    完整數據描述 : 此數據在文件中的 起始位置(當然是通過程序取得的,這為了方便我標出)
    ..c.  0 
    - 22
    ..a.  
    23 - 55
    ..b.  
    56- 76
    ..d.  
    77 - 130
    ..f.  
    131 - 220
    ..e.  
    221 - 243

      2. 數據結構預開空間 100 byte
      3. 文件存儲在描述 : # 鏈表排序我就不介紹了,數據結構的最基本技能,修改數據結構中的比自己小的指向
          我這就給出結果
    { /tmp/文件1, 0-22 ,  300 }   #說明 c : 在鏈表位置 0
    { /tmp/文件1, 23-55 , 200 }       # a : 100
    { /tmp/文件1, 56-76 , 0 }     # b : 200
    { /tmp/文件1, 77-130 , 500 }  # d : 300
    { /tmp/文件1, 131-220 ,  } # f : 400
    { /tmp/文件1, 221-243 , 400 } # e : 500

    4. 倒敘輸出 由小到到
         假設預存最小 為  200 鏈表位置
         找出 使用 open /tmp/文件1 
           并使用 seek 文件游標 定位  23-55 取出  ..a...
           根據 鏈表中 200 到 seek 56 76 取出 ..b...
           等等

    當然 上面
      數據結構你可以使用 雙向鏈表, btree , 紅黑 , 斐波那契。。。( 數據結構終于感覺有用了,不枉費我考的軟證啊!)


    通過說明,我這 給大家提供個 可能需要的 技術細節 (py),不足之處 歡迎拍磚!!

    1. 二進制文件 結構化 寫,修改
    #指定修改 190 byte 處的 內容
    import os
    from struct import *
    fd 
    = os.open( "pack1.txt", os.O_RDWR|os.O_CREAT )

    ss 
    = pack('ii11s'34'google')
    os.lseek(fs, len(ss)
    *10, 0) 
    os.write(fs,ss) 
    os.fsync(fs)

    #os.close( fs )



    2. seek 指定位置結構化讀取


    from struct import *
    file_object 
    = open('pack1.txt''rb')

    def ts(si,ss=len(ss)):
        file_object.seek(si
    *ss)
        chunk 
    = file_object.read(ss)
        a,b,c
    =unpack('ii11s', chunk )
        
    print a,b,c

    ts(10)
    #輸出 
    3 4 google





    1. 其他語言的 使用
    struct 結構定義 ,在 python 中 使用  struct 包,這樣序列出來的數據到文件中其他語言也可以使用
     參考: http://www.pythonid.com/bbs/archiver/?tid-285.html
    pack1.py
    from struct import *

    # i 為 int(4)  11s 為預留 11 位置 的 string
    # 此數據類型 為 19 byte ss 
    = pack('ii11s'12'hello world')

    = open("pack1.txt""wb")
    f.write(ss)
    f.close()


    上面的代碼往C的結構中寫入數據,結構包括兩個整型和一個字符串。
    pack1.c
    #include <stdio.h>
    #
    include <string.h>

    struct AA
    {
        int a;
        int b;
        char    c[
    64];
    };

    int main()
    {
        struct AA   aa;
        FILE    
    *fp;
        int     size, readsize;
          
        memset(
    &aa, 0, sizeof(struct AA));
       
        fp 
    = fopen("pack1.txt""rb");
        
    if (NULL == fp) {
            printf(
    "open file error!"n");
            
    return 0;
        }
       
        readsize 
    = sizeof(struct AA);
        printf(
    "readsize: %d"n", readsize);
      
        size 
    = fread(&aa, 1, readsize, fp);   
        printf(
    "read: %d"n", size);
        printf(
    "a=%d, b=%d, c=%s"n", aa.a, aa.b, aa.c);
       
        fclose(fp);
       
        
    return 0;
    }

    結果輸出:
    C:"Documents and Settings"lky"桌面"dataStructure>a
    readsize: 72
    read: 57
    a=1, b=2, c=hello word



       
    最后羅嗦下:
      能用數據結構了,很多東西都可以根據自己邏輯定制 存儲很方便 。 不再受 關系數據庫 , key 數據庫 或 mapreduce 的限制
      
    參考:
    http://docs.python.org/library/struct.html#module-struct    #官方struct 包 說明
    http://blog.csdn.net/JGood/archive/2009/06/22/4290158.aspx  # 使用 struct  的前輩留下的
    http://www.tutorialspoint.com/python/os_lseek.htm #一個小demo
    Python天天美味(17) - open讀寫文件










    整理 m.tkk7.com/Good-Game
    posted on 2009-11-04 15:16 劉凱毅 閱讀(2118) 評論(0)  編輯  收藏 所屬分類: python數據挖掘
    主站蜘蛛池模板: 又黄又爽无遮挡免费视频| 亚洲欧洲日产国码www| 亚洲爆乳大丰满无码专区| 在线观看视频免费完整版| 久久久久亚洲AV无码永不| 爱情岛论坛亚洲品质自拍视频网站 | 久久精品国产亚洲AV麻豆网站| 一本一道dvd在线观看免费视频| 四虎1515hm免费国产| 亚洲v高清理论电影| 色偷偷亚洲第一综合网| 看全色黄大色大片免费久久| 亚洲αv久久久噜噜噜噜噜| 亚洲AV噜噜一区二区三区| 免费观看国产精品| 九九免费精品视频在这里| 亚洲午夜未满十八勿入网站2| 亚洲av片在线观看| 亚洲午夜日韩高清一区| 99久久免费国产精品热| 久久久久亚洲AV无码专区首| 最近免费中文字幕高清大全| 亚洲a级片在线观看| 国产人妖ts在线观看免费视频| 四虎精品成人免费视频| 亚洲老妈激情一区二区三区| 成人久久久观看免费毛片| 国产亚洲美女精品久久久2020 | 亚洲美女视频网站| 免费视频一区二区| 亚洲国产精品无码久久一区二区 | 国产亚洲人成网站观看| 亚洲人成影院在线观看| 亚洲小视频在线播放| 97在线观看永久免费视频| 亚洲日韩中文字幕日韩在线| 中文字幕免费在线看线人动作大片| 亚洲av无码一区二区乱子伦as| 巨波霸乳在线永久免费视频 | 久久国产亚洲精品| 日韩在线播放全免费|