在hdfs上读取压缩的json需要很长时间

bsxbgnwa  于 2021-07-13  发布在  Spark
关注(0)|答案(1)|浏览(608)

我在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个阶段。我必须创建一个Dataframe,然后转换成tempview。在使用sql之后,执行一些sql操作。在我的例子中,几乎所有的设置都是默认的。
数据处理的其余部分如下:

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

vwhgwdsa1#

带有dfs等的优化器与rdd处理的优化器不同。它可以而且有时确实在涉及dfs的行动之前启动阶段。例如,压缩文件、推断模式和数据透视。
在这个例子中,有一个想要推断模式的例子。这是一个缓慢的过程。
您可以提供模式,这样可以节省时间。
或在指定推断时使用抽样百分比;这样做会更快,但您可能会遇到无法获得整体正确模式的风险。

相关问题