python - 从 Pandas 数据帧到 Spark 数据帧的转换需要大量时间

标签 python pandas dataframe pyspark

我使用 48 核远程计算机,但是对于大小为 (1009224, 232) 的 pandas 数据帧,下面所示的操作需要花费大量时间。实际上,我在 Spark 的 Web GUI 上看不到运行阶段。有什么想法或建议吗? [更新] 我的主要问题是我无法实现使用 48 核机器的所有可用核心。我想我的配置是错误的。此代码执行但未在 48 核中执行。

from pyspark.sql import SparkSession

spark_session = SparkSession.builder.appName("rocket3") \
    .config('spark.driver.memory', '30g')\
    .config('spark.executor.memory', '30g')\
    .config('spark.executor.cores', '40') \
    .config('spark.cores.max', '40') \
    .getOrCreate()

import time

start = time.time()
df_sp = spark_session.createDataFrame(x_df)
end = time.time()
print(end - start)

最佳答案

使用此代码片段进行转换。

dataset = pd.read_csv("data/file.csv")
sc = SparkContext(conf=conf)
sqlCtx = SQLContext(sc)
sdf = sqlCtx.createDataFrame(dataset)

如果您收到此错误

TypeError: Can not merge type <class 'pyspark.sql.types.StringType'> and <class 'pyspark.sql.types.DoubleType'>

然后将列的数据类型更改为str

例如。

df[['SomeCol', 'Col2']] = df[['SomeCol', 'Col2']].astype(str)

关于python - 从 Pandas 数据帧到 Spark 数据帧的转换需要大量时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66434989/

相关文章:

python - 在Python中用较小的矩阵生成更大的矩阵

python - pandas 中多列分类值的映射

python - 如何用 Pandas 读取文件(带有特殊字符)?

python - 对数据帧进行排序时,为什么在没有 NaN 值的情况下得到 "TypeError: unorderable types: str() < float()"?

python - Pandas pd.isnull() 函数

Python Pandas : Doing cumsum for each day for months

scala - 创建数据帧时如何解决 scala.MatchError

python - 如何清除 memoize 缓存?

python - Pandas - 在整个数据框中搜索特定文本

python - 如何获取用户 session 的 Pandas TimeSeries(使用 Pandas 或 Numpy)