我正在尝试在本地pyspark脚本上运行单元测试,以便将其集成到CI中。
$ pyspark
...
>>> import pandas as pd
>>> df = pd.DataFrame([(1,2,3), (4,5,6)])
>>> df
0 1 2
0 1 2 3
1 4 5 6
根据the documentation,我应该可以使用以下内容进行转换:
from awsglue.dynamicframe import DynamicFrame
dynamic_frame = DynamicFrame.fromDF(dataframe, glue_ctx, name)
但是当我尝试转换为DynamicFrame时,尝试实例化胶水上下文时会出错
$ pyspark
>>> from awsglue.context import GlueContext
>>> sc
<SparkContext master=local[*] appName=PySparkShell>
>>> glueContext = GlueContext(sc)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/Library/Python/2.7/site-packages/awsglue/context.py", line 43, in __init__
self._glue_scala_context = self._get_glue_scala_context(**options)
File "/Library/Python/2.7/site-packages/awsglue/context.py", line 63, in _get_glue_scala_context
return self._jvm.GlueContext(self._jsc.sc())
TypeError: 'JavaPackage' object is not callable
如何使用AWS Glue Dev Endpoints在没有的情况下正常工作?我不想每次都每次向我收费。太荒谬了。
答案 0 :(得分:0)
我认为,除了使用胶水之外,对于我们而言,没有其他选择。供参考:Can I test AWS Glue code locally?
答案 1 :(得分:0)
为什么要从数据帧转换为DynamicFrame,因为无法使用Glue API进行单元测试-没有用于Glue API的模拟?
我更喜欢以下方法: