私はスパークが初めてです。私はマスター(192.168.33.10)とスレーブ(192.168.33.12)のクラスタセットアップをローカルに持っており、マスターとスレーブの両方が自分のマシンでget_ip_wrap()を実行していることをデモするために、次のスクリプトに書きました。Spark/Python - IPアドレスを取得しています。
しかし、コマンド./bin/spark-submit ip.py
を実行すると、出力に192.168.33.10
しか表示されませんでしたが、出力には192.168.33.12
もあると予想していました。
['192.168.33.10', '192.168.33.10', '192.168.33.10', '192.168.33.10', '192.168.33.10']
私はここに何か不足していますか?
import socket
import fcntl
import struct
from pyspark import SparkContext, SparkConf
def get_ip_address(ifname):
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
return socket.inet_ntoa(fcntl.ioctl(
s.fileno(),
0x8915, # SIOCGIFADDR
struct.pack('256s', ifname[:15])
)[20:24])
def get_ip_wrap(num):
return get_ip_address('eth1')
conf = SparkConf().setAppName('appName').setMaster('local')
sc = SparkContext(conf=conf)
data = [1, 2, 3, 4, 5]
distData = sc.parallelize(data)
result = distData.map(get_ip_wrap)
print result.collect()