火花需要很长时间才能在 HDFS 上读取压缩的 json

Posted

技术标签:

【中文标题】火花需要很长时间才能在 HDFS 上读取压缩的 json【英文标题】:spark taking a long time for reading a compressed json on HDFS 【发布时间】:2021-02-19 10:55:46 【问题描述】:

我在 HDFS 上有 2 个压缩的 jsons 文件 (bz2)。我必须在 Spark 中加载它们。为此,我首先启动了 pyspark (shell),然后为此执行以下查询:

>> df = spark.read.load("hdfs://master:9000/data/db1/file_part*.bz2", format="json", sep=",", inferSchema="true")
    [Stage 0:>                              (8 + 4) / 503]

可以看出它正在加载数据。为什么会这样。据我所知,spark 在动作之前不执行任何操作(因为它是惰性的),那么在这种情况下有 503 个阶段。我必须创建一个数据框,然后转换为 tempView。在此使用 SQL 之后,执行一些 SQL 操作。就我而言,几乎所有设置都是默认设置。

其余部分数据处理如下:

df.createOrReplaceTempView("view1")
sqlContext.sql("select count(distinct(id)) from view1").show()

【问题讨论】:

【参考方案1】:

带有 DF 等的优化器与 RDD 处理的优化器不同。现在,它可以而且确实有时会在涉及 DF 的动作之前启动阶段。例如,压缩文件,推断架构和数据透视。

在这种情况下,存在想要推断模式的情况。这是一个 过程缓慢。

    您可以提供架构,这样可以节省时间。 或者在指定推断时使用采样百分比;那么这会更快,但您可能无法获得整体正确的架构。

【讨论】:

您能否详细说明一下。有什么可能的解决方案来摆脱这个(以节省时间)?

以上是关于火花需要很长时间才能在 HDFS 上读取压缩的 json的主要内容,如果未能解决你的问题,请参考以下文章

分享意图需要很长时间才能出现

HDFS入门

IconData 需要很长时间才能加载并且不显示图标

HDFS简单入门

在 Jupyter Windows 上使用 pool 并行读取多个文件需要很长时间:

Reachability 示例代码中的 SCNetworkReachabilityGetFlags 需要很长时间才能返回