小编Pha*_*ong的帖子

使用新 pyspark.pandas 的正确方法是什么?

Databricks 最近的这篇博客文章https://databricks.com/blog/2021/10/04/pandas-api-on-upcoming-apache-spark-3-2.html表示,pandas 程序所需的唯一更改是在 pyspark.pandas 下运行它是更改from pandas import read_csvfrom pyspark.pandas import read_csv.

但这似乎不对。那么所有其他(非read_csv)对 pandas 的引用呢?import pandas as pd改变不是正确的方法吗import pyspark.pandas as pd?然后现有程序中的所有其他 pandas 引用都将指向 pandas 的 pyspark 版本。

pandas pyspark databricks

7
推荐指数
1
解决办法
5944
查看次数

了解 Spark 创建的分区数量

读取 .csv 时 pyspark-sql 将创建多少个分区?

我对此的理解是 number of partitions = math.ceil(file_size/spark.conf.get('spark.sql.files.maxPartitionBytes'))

在我的机器上:

spark.conf.get('spark.sql.files.maxPartitionBytes')
output: 
'134217728b' #128MBs
Run Code Online (Sandbox Code Playgroud)

但是,我没有观察到这种行为。我创建了一个在磁盘上占用 96 MB 的文件。我在本地模式下运行 Spark。我有一台 8 核笔记本电脑。我认为它应该读入 1 个分区。但是,该文件在 8 个分区中被读取。以下是我使用过的代码库:

import pandas as pd
import numpy as np
from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()
#creating a small DataFrame. This will occupy 96 MBs on disk
pd.DataFrame({'id':np.arange(10000000),'b':np.random.choice(['a','b','c','d'],size=(10000000,),p=[0.25,0.25,0.25,0.25])}).to_csv('df_s.csv',index=None)
sd=spark.read.csv('df_s.csv',schema="id int, b string")
sd.rdd.getNumPartitions()
output: 8
Run Code Online (Sandbox Code Playgroud)

您能帮我理解为什么无论文件大小如何我都会看到 8 个分区吗?

apache-spark apache-spark-sql pyspark

6
推荐指数
1
解决办法
1884
查看次数