我试图理解@jitclass装饰器如何与嵌套类一起工作.我写了两个虚拟类:fifi和toto fifi有一个toto属性.这两个类都有@jitclass装饰器,但编译失败.这是代码:
fifi.py
from numba import jitclass, float64
from toto import toto
spec = [('a',float64),('b',float64),('c',toto)]
@jitclass(spec)
class fifi(object):
def __init__(self, combis):
self.a = combis
self.b = 2
self.c = toto(combis)
def mySqrt(self,x):
s = x
for i in xrange(self.a):
s = (s + x/s) / 2.0
return s
Run Code Online (Sandbox Code Playgroud)
toto.py:
from numba import jitclass,int32
spec = [('n',int32)]
@jitclass(spec)
class toto(object):
def __init__(self,n):
self.n = 42 + n
def work(self,y):
return y + self.n
Run Code Online (Sandbox Code Playgroud)
启动代码的脚本:
from datetime import datetime
from fifi import …Run Code Online (Sandbox Code Playgroud) 我正在Spark集群(带有毛线)上运行一本jupyter笔记本。我正在使用“ findspark”包来设置笔记本,它工作得很好(我通过SSH隧道连接到集群主机)。当我编写“自包含”笔记本时,它可以正常运行,例如,以下代码可以正常运行:
import findspark
findspark.init()
import pyspark
sc = pyspark.SparkContext(appName='myApp')
a = sc.range(1000,numSlices=10)
a.take(10)
sc.stop()
Run Code Online (Sandbox Code Playgroud)
Spark工作完全分配给了工人。但是,当我想使用自己编写的python包时,worker上的文件丢失了。
当我不使用Jupyter-notebook时,当我使用spark-submit --master yarn --py-files myPackageSrcFiles.zip时,我的Spark作业可以正常工作,例如以下代码可以正确运行:
main.py
import pyspark
from myPackage import myFunc
sc = pyspark.SparkContext(appName='myApp')
a = sc.range(1000,numSlices=10)
b = a.map(lambda x: myFunc(x))
b.take(10)
sc.stop()
Run Code Online (Sandbox Code Playgroud)
然后
spark-submit --master yarn --py-files myPackageSrcFiles.zip main.py
Run Code Online (Sandbox Code Playgroud)
问题是:如何从jupyter笔记本运行main.py?我尝试使用pyfiles关键字在SparkContext中指定.zip包,但出现错误...