Spark DataFrame限制功能需要花费太多时间才能显示

问题描述 投票:0回答:1
import pyspark
from pyspark.sql import SparkSession
from pyspark.conf import SparkConf
import findspark
from pyspark.sql.functions import countDistinct
spark = SparkSession.builder \
.master("local[*]") \
.appName("usres mobile related information analysis") \
.config("spark.submit.deployMode", "client") \
.config("spark.executor.memory","3g") \
.config("spark.driver.maxResultSize", "1g") \
.config("spark.executor.pyspark.memory","3g") \
.enableHiveSupport() \
.getOrCreate()

handset_info = ora_tmp.select('some_value','some_value','some_value','some_value','some_value','some_value','some_value')

我用3gb执行内存和3gb执行pyspark内存配置spark。我的数据库有超过7000万行。显示我打电话给

 handset_info.show()

它显示在2-5秒之间的前20行。但是当我尝试运行以下代码时

mobile_info_df = handset_info.limit(30)
mobile_info_df.show()

显示前30行需要花费太多时间(3-4小时)。花费那么多时间是合乎逻辑的。我的配置有问题吗?我的笔记本电脑的配置是 -

  • Core i7(4核)笔记本电脑配8gb内存
python-3.x pyspark bigdata data-science
1个回答
0
投票

你的配置很好。这种巨大的持续时间差异是由底层实施引起的不同之处在于limit()在创建具有30行的数据帧之前读取所有7000万行。相比之下,Show()只占用现有数据帧的前20行,因此只读取这20行。如果您只是在显示30行而不是20行时,可以使用30作为参数调用show()方法:

df.show(30, truncate=False)
© www.soinside.com 2019 - 2024. All rights reserved.