[EMR 5.27上的pyspark spark 2.4-列出文件后集群停止处理

问题描述 投票:2回答:2

给出一个几乎不做任何转换就能将csv转换为木地板(从and到S3)的应用程序:

for table in tables:
    df_table = spark.read.format('csv') \
            .option("header", "true") \
            .option("escape", "\"") \
            .load(path)

    df_one_seven_thirty_days = df_table \
            .filter(
                (df_table['date'] == fn.to_date(fn.lit(one_day))) \
                    | (df_table['date'] == fn.to_date(fn.lit(seven_days))) \
                    | (df_table['date'] == fn.to_date(fn.lit(thirty_days)))
            )

    for i in df_one_seven_thirty_days.schema.names:
        df_one_seven_thirty_days = df_one_seven_thirty_days.withColumnRenamed(i, colrename(i).lower())
    df_one_seven_thirty_days.createOrReplaceTempView(table)

   df_sql = spark.sql("SELECT * FROM "+table)
   df_sql.write \
        .mode("overwrite").format('parquet') \
        .partitionBy("customer_id", "date") \
        .option("path", path) \
        .saveAsTable(adwords_table)

我在使用火花EMR时遇到困难。

在具有spark提交功能的本地计算机上,这运行起来没有困难(140MB数据),而且运行速度非常快。但是在EMR上,这是另一个故事。

第一个“ adwords_table”将毫无问题地转换,但是第二个保持闲置。

我浏览了EMR提供的spark作业UI,并注意到完成此任务后会发现:

列出187个路径的叶文件和目录:

火花会杀死所有执行者:enter image description here

以及20分钟后,没有任何其他反应。所有任务都在“已完成”上,并且没有新任务开始。我正在等待saveAsTable开始。

我的本地计算机是8核15GB,群集由10个节点组成r3.4xlarge:32 vCore,122 GiB内存,320 SSD GB存储EBS存储:200 GiB

配置使用maximizeResourceAllocation true,我只将--num-executors / --executor-cores更改为5

没有人知道集群为什么进入“空闲”状态而不完成任务吗? (它最终会在3小时后崩溃而没有错误)

编辑:通过删除所有胶目录连接+降级hadoop的使用,我取得了一些进展:hadoop-aws:2.7.3

现在saveAsTable可以正常工作,但是一旦完成,我看到执行程序已被删除并且集群处于空闲状态,该步骤将无法完成。

因此我的问题仍然相同。

apache-spark hadoop amazon-emr
2个回答
0
投票

经过许多尝试和头痛之后,我发现集群仍在运行/处理中。它实际上是在尝试写入数据,但只能从主节点进行。

令人惊讶的是,它不会在UI上显示,给人的感觉是空闲。

无论我做什么,写作都要花几个小时(partition(1),更大的簇等)。>>

这里的主要问题是saveAsTable,我不知道它正在做什么,这花费了很长时间或使编写变得如此缓慢。

因此,我在群集上本地访问了write.parquet(“ hdfs:/// tmp_loc”),然后进行处理以使用从hdfs到s3文件夹的aws s3-dist-cp

性能非常出色,我从一个saveAsTable(花费3到5个小时来写入17,000行/ 120MB)到3分钟。

由于数据/架构可能会在某些时候发生变化,所以我只是从sql请求中执行粘合保存。


0
投票

我也面临着同样的问题,该问题与EMR 5.27的新版本有关吗?对我来说,一个执行者的工作时间也很长。它完成了所有99%的执行者,这是在读取文件时发生的。

© www.soinside.com 2019 - 2024. All rights reserved.