zoukankan      html  css  js  c++  java
  • Hadoop Python 调用自定义so动态库

    使用import需要在所有宿主机安装相应模块,但使用ctypes库可以调用

    •  test.c
    #include <stdio.h>
    
    int add(int);
    int out(); 
    int buffer[100];
    int count = 0;
    
    int add(int num) {
        if (count < 100) {
            buffer[count] = num;
            count++;
        }
        return 0;
    }
    
    int out() {
        int i;
        for (i = 0; i < count; i++) {
            printf("%d
    ", buffer[i]);
        }
        return 0;
    }
    • test_map.py
    #!/usr/bin/python
    #coding=utf8
    
    import sys 
    from ctypes import *
    
    so = './test.so'
    cdll.LoadLibrary(so)
    api = CDLL(so)
    api.add.argtypes = [c_int]
    api.add.restype = c_int
    api.out.argtypes = []
    api.out.restype = c_int
    
    for line in sys.stdin:
        if line.find("100013221") != -1:
            v = line.strip().split('	')
            api.add(int(v[1]))
        
    api.out()
    • test_red.py
    #!/usr/bin/python
    #coding=utf8
    
    import sys 
    
    for line in sys.stdin:
        sys.stdout.write(line)
    • test.sh
    hadoop jar $streaming 
    -Dmapred.reduce.tasks=1 
    -Dmapred.output.compress=true 
    -Dmapred.output.compression.codec=com.hadoop.compression.lzo.LzoCodec 
    -Dmapred.output.compression.type=BLOCK 
    -Dmapred.compress.map.output=true 
    -Dmapred.map.output.compression.codec=com.hadoop.compression.lzo.LzoCodec 
    -input $input 
    -output $output 
    -mapper "test_map.py" 
    -file test_map.py 
    -reducer "test_red.py" 
    -file test_red.py 
    -file test.so

    参考文献:

    https://blog.csdn.net/frankie110/article/details/8724509/

    http://www.isnowfy.com/introduction-to-python-c-extension/

  • 相关阅读:
    Handler消息传递机制
    Calendar 类的应用
    English--分词短语
    English--定语从句
    English--状语从句
    English--名词从句
    English--并列句
    English--不完全及物动词与授予动词
    爬虫--selenium之 chromedriver与chrome版本映射表(最新至v2.46版本chromedriver)
    English--动词语态
  • 原文地址:https://www.cnblogs.com/jhc888007/p/9018483.html
Copyright © 2011-2022 走看看