count(),show()在聚合数据上运行非常慢,但在原始数据上运行良好

时间:2019-01-10 10:10:55

标签: python-3.x amazon-s3 pyspark apache-zeppelin ambari

这可能是一个非常基本的问题,但是我对pyspark和zeppelin还是陌生的。
我正在使用pyspark上下文从齐柏林飞艇中的s3中读取镶木地板,然后在其上运行聚合。
mydf.show()mydf.count()在从s3导入的原始数据上可以正常运行(在5分钟内运行),但是在我对数据帧进行汇总,过滤或运行任何其他操作后,它们非常缓慢(需要一个多小时)。
有人可以请问这是为什么发生的,我该怎么做才能使它们更快地运行?

我已经尝试了不同的聚合方式,例如使用spark.sqlgroupBy.agg,但似乎没有任何改变。另外,我还通过删除/删除所有临时文件和数据帧来释放了群集上的空间。

%spark2.pyspark

from pyspark import SparkContext
from pyspark.sql import SQLContext
from pyspark import SparkConf
from pyspark.sql import SparkSession
import pandas as pd
sc = SparkContext.getOrCreate()

sqlContext = SQLContext(sc)

df = sqlContext.read.parquet("path.parquet")

from pyspark.sql.types import DateType

df = df.withColumn("datet",df['timestamp'].cast(DateType()))

df = df[["keeping required columns"]]

df.show() #working fine

from pyspark.sql import SQLContext

df.createOrReplaceTempView("dftempview")

df1 = spark.sql("select _col1, sum(_col2) _col2, count(*) _col3 from dftempview where _col1 is not null or _col1 != '' group by _col1")

spark.catalog.dropTempView("dftempview")

df1.show() #taking more than an hour to show dataframe

#Also tried

df1 = df.groupBy("_col1").agg(sum("_col2").alias("_col2"))

df1.show() #taking same time

我也尝试过在sql上下文中创建临时视图并运行select count(*), sum(_col2) from mydftempview,但这也无法正常工作。

0 个答案:

没有答案