当前位置: 首页 > 知识库问答 >
问题:

如何在本地将dataframe转换为DynamicFrame,而不使用glue-dev内点?

岑彬炳
2023-03-14

我试图在本地对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

根据文档,我应该能够使用以下方法进行转换:

from awsglue.dynamicframe import DynamicFrame
dynamic_frame = DynamicFrame.fromDF(dataframe, glue_ctx, name)

但是当我尝试转换为DynamicFrame时,我在尝试实例化glucontext时会出现错误

$ 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 Endpoint的情况下使其工作?我不想每次提交代码时都被收费。这太荒谬了。

共有2个答案

郝池暝
2023-03-14

我认为目前除了使用胶水之外,我们没有其他替代选择。供参考:我可以在本地测试AWS胶水代码吗?

郑和泰
2023-03-14

为什么要从dataframe转换为DynamicFrame,因为您不能使用Glue API进行单元测试-Glue API没有模拟?

我更喜欢以下方法:

  1. 每个胶水作业写两个文件-job_glue.py和job_pyspark.py
  2. 在job_glue.py中编写Glue API特定代码
  3. 编写非胶水api特定代码job_pyspark.py
  4. 编写pytest测试用例来测试job_pyspark.py
 类似资料:
  • 有谁能帮我弥补我所缺少的东西吗? 提前道谢!

  • 我正在使用AWS S3、Glue和Athena进行以下设置: S3级-- 我的原始数据作为CSV文件存储在S3上。我正在使用Glue进行ETL,并使用Athena查询数据。 因为我使用的是雅典娜,所以我想将CSV文件转换为拼花。我现在正在用AWS胶水来做这个。这是我当前使用的流程: 运行爬虫读取CSV文件并填充数据目录 胶水作业一次只允许我转换一个表。如果我有很多CSV文件,这个过程很快就变得无法

  • 如何使用用户指定的架构将dataframe转换为Avro格式?

  • 有人能分享一下如何将转换为吗?

  • 问题内容: 我正在尝试在jni中将jbyteArray转换为本地c字符串(char *)?不幸的是,我找不到有关该操作的任何文档。我正在C代码中使用以下原型调用Java函数。 在C代码中,我正在调用此函数,该函数返回一个字节数组。该字节数组的内容是一个Java字符串。但是我需要将其转换为ac字符串。 问题答案: 相信您会使用和。就像是: 你应该能够投给在这一点上,以访问数组中的数据。请注意,这可能

  • 问题内容: 我正在尝试将数据框的一栏转换为日期时间。在这里的讨论之后,https://github.com/dask/dask/issues/863我尝试了以下代码: 但是我收到以下错误消息 我到底应该把什么放在meta之下?我应该将所有列的字典放在df中还是仅将“时间”列放在字典中?我应该放什么类型?我已经尝试过dtype和datetime64,但到目前为止它们都没有工作。 谢谢,感谢您的指导,