火花需要很长时间才能在 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的主要内容,如果未能解决你的问题,请参考以下文章
在 Jupyter Windows 上使用 pool 并行读取多个文件需要很长时间:
Reachability 示例代码中的 SCNetworkReachabilityGetFlags 需要很长时间才能返回