首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 ><星火Dataframe>.write.parquet(<directory>)和<火花Dataframe>.write.parquet(<file name>.parquet)的区别

<星火Dataframe>.write.parquet(<directory>)和<火花Dataframe>.write.parquet(<file name>.parquet)的区别
EN

Stack Overflow用户
提问于 2022-06-03 00:15:14
回答 1查看 215关注 0票数 0

我终于被介绍给大家了,我正试着更好地理解它。我意识到,在运行spark时,最好有至少与内核一样多的地板文件(分区),以便尽可能充分地利用spark。但是,制作一个大的拼花文件和几个较小的拼花文件来存储数据有什么好处/缺点?

作为一个测试,我使用这个数据集:

https://nyc-tlc.s3.amazonaws.com/trip+data/fhvhv_tripdata_2021-01.parquet

这是我正在测试的代码:

代码语言:javascript
复制
import pyspark
from pyspark.sql import SparkSession

spark = SparkSession.builder \
    .master("local[*]") \
    .appName('test') \
    .getOrCreate()
df = spark.read.parquet('fhvhv_tripdata_2021-01.parquet')
df.write.parquet('test.parquet')
df.write.parquet('./test')

当我ls -lh文件时,我看到: test.parquet文件是4.0K

写入目录所创建的两个文件是: 2.5K和189M

当我把这些读回不同的数据时,它们的计数是相同的。

什么时候才是最好的做法呢?在写入目录时,平衡文件大小的最佳实践是什么?您应该这样做吗?在编写/阅读拼花文件时,请提供任何指导/经验规则。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-06-11 13:19:47

在spark中,您可以使用重新分区将文件分解为几乎相等的块,并且正如databricks培训中所建议的那样,您可以选择核数并使用该数字重新划分文件,因为默认的混乱分区设置为200,除非有大量的数据,否则这是有点高的。

关于重新分区的一个具体问题是,当您的数据具有复杂的数据类型,而这些数据的大小变化很大时,您可以参考堆栈上的this问题。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72483511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档