我大多只使用 xlwings 打开 ( read-write
) 工作簿(因为我阅读的工作簿有复杂的宏)。但是我最近开始使用 openpyxl 打开 ( read-only
) 工作簿,因为我需要阅读数千个工作簿来抓取一些数据。
我注意到 xlwings 和 openpyxl 读取工作簿的方式有很大的不同。我相信 xlwings 依赖于pywin32
阅读工作簿。当您阅读工作簿时xlwings.Book(<filename>)
,实际工作簿会打开。我有一种感觉,这是一个结果pywin32
。
但是,使用openpyxl.load_workbook(<filename>)
工作簿时不会出现窗口。我有一种感觉,这是不使用pywin32
.
除此之外,我没有进一步了解后端如何为每个库工作。有人可以对此有所了解吗?依赖xlwings
和pywin32
阅读工作簿是否有好处/成本,而openpyxl
不是似乎没有使用pywin32
?
在过去的几天里,我一直在努力了解Spark执行者如何知道在导入时如何使用给定名称的模块.我正在使用AWS EMR.情况:我通过键入来初始化EMR上的pyspark
pyspark - 主纱
然后,在pyspark,
import numpy as np ## notice the naming
def myfun(x):
n = np.random.rand(1)
return x*n
rdd = sc.parallelize([1,2,3,4], 2)
rdd.map(lambda x: myfun(x)).collect() ## works!
Run Code Online (Sandbox Code Playgroud)
我的理解是,当我输入numpy as np
,主节点导入和识别的唯一节点numpy
通过np
.然而,与EMR簇(2个工作者节点),如果我上运行RDD地图功能,驱动程序发送功能的工作节点执行用于列表中每个项目的功能(对于每个分区),和一个返回成功结果.
我的问题是:工人们如何知道numpy应该作为np导入?每个worker都已经安装了numpy,但是我没有为每个节点明确定义一种导入模块的方法as np
.
有关依赖关系的更多详细信息,请参阅Cloudera的以下帖子:http: //blog.cloudera.com/blog/2015/09/how-to-prepare-your-apache-hadoop-cluster-for-pyspark-jobs/
在Complex Dependency下,他们有一个示例(代码),其中pandas模块在每个节点上显式导入.
我听说过的一个理论是驱动程序分发在pyspark交互式shell中传递的所有代码.我对此持怀疑态度.我提出的反驳这个想法的例子是,如果在主节点上我输入:
print "hello"
Run Code Online (Sandbox Code Playgroud)
是每个工人节点还打印"你好"?我不这么认为.但也许我错了.