Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AWS将奇怪的内存使用情况与python 3结合起来_Python_Amazon Web Services_Apache Spark_Pyspark_Aws Glue - Fatal编程技术网

AWS将奇怪的内存使用情况与python 3结合起来

AWS将奇怪的内存使用情况与python 3结合起来,python,amazon-web-services,apache-spark,pyspark,aws-glue,Python,Amazon Web Services,Apache Spark,Pyspark,Aws Glue,我正在使用AWS Glue中的spark处理来自S3存储桶的数据,并将结果写入红移集群。直到今天,我始终使用以下库版本: Python 2.7 胶水0.9 火花2.2 因为Python 2将在1月份被弃用,所以我开始用Python 3.6转换我的所有脚本。为了做到这一点,我还将Glue和Spark的版本分别更改为1.0和2.4 升级后,我开始发出许多内存不足错误。由于同一错误,我的所有作业运行都失败: Py4JJavaError:调用o90.resolveChoice时出错。 :org.apac

我正在使用AWS Glue中的spark处理来自S3存储桶的数据,并将结果写入红移集群。直到今天,我始终使用以下库版本:

Python 2.7 胶水0.9 火花2.2

因为Python 2将在1月份被弃用,所以我开始用Python 3.6转换我的所有脚本。为了做到这一点,我还将Glue和Spark的版本分别更改为1.0和2.4

升级后,我开始发出许多内存不足错误。由于同一错误,我的所有作业运行都失败:

Py4JJavaError:调用o90.resolveChoice时出错。 :org.apache.spark.sparkeexception:作业因阶段失败而中止:阶段0.0中的任务38失败4次,最近的失败:阶段0.0中的任务38.3丢失(TID 474,ip-172-75-5-103.eu-central-1.compute.internal,executor 119):executor lostfailure(执行器119因一个正在运行的任务而退出)原因:容器因超过内存限制而被纱线杀死。使用5.8 GB的5.5 GB物理内存。考虑提升火花。纱线。执行器。内存开销。

以下是Cloudwatch显示的指标:

Python2.7内存使用

Python3.6内存使用

我想说明一下,这两个作业都在处理相同的数据,除了使用的python版本之外,脚本是相同的。下面是我使用的一段代码:

sc = SparkContext()
glue_context = GlueContext(sc)
glue_context.setConf('spark.sql.session.timeZone', 'UTC')
spark = glue_context.spark_session
job = Job(glue_context)

s3_parts = CustomRetriever(bucket=params['bucket'],
                               location_prefix=params['location_prefix'],
                               ymdh_from=params['from'],
                               ymdh_to=params['to'])

try:
    job.init(params['JOB_NAME'], params)

    for part in s3_parts:
        part_path = part.get_path()

        sources = glue_context.create_dynamic_frame \
            .from_options(connection_type="s3",
                          connection_options={'paths': part, 'recurse': True, 'groupFiles': 'inPartition'},
                          format="json", transformation_ctx="source")

        resolution_choice = ResolveChoice.apply(frame=sources, choice="cast:double")

        # Spark transformations
except:
    logger.error(traceback.format_exc())
    raise
finally:
    job.commit()
CustomRetriever是一个简单的自定义库,用于检索要处理的数据的s3路径。python 3中的作业在Resolve Choice函数中总是失败


还有其他人面临Python 3发布的相同问题吗?

这里也有同样的问题,找到解决方案了吗?