- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 1000 万条记录和 150 列的 Spark 数据框。我正在尝试将其转换为 pandas DF。
x = df.toPandas()
# do some things to x
并且失败,序数必须 >= 1
。我认为这是因为它太大而无法立即处理。是否可以将其分块并将其转换为每个 block 的 pandas DF?
完整堆栈:
ValueError Traceback (most recent call last)
<command-2054265283599157> in <module>()
158 from db.table where snapshot_year_month=201806""")
--> 159 ps = x.toPandas()
160 # ps[["pol_nbr",
161 # "pol_eff_dt",
/databricks/spark/python/pyspark/sql/dataframe.py in toPandas(self)
2029 raise RuntimeError("%s\n%s" % (_exception_message(e), msg))
2030 else:
-> 2031 pdf = pd.DataFrame.from_records(self.collect(), columns=self.columns)
2032
2033 dtype = {}
/databricks/spark/python/pyspark/sql/dataframe.py in collect(self)
480 with SCCallSiteSync(self._sc) as css:
481 port = self._jdf.collectToPython()
--> 482 return list(_load_from_socket(port, BatchedSerializer(PickleSerializer())))
483
最佳答案
如果您的表有一个整数键/索引,您可以使用循环+查询来读取大数据帧的 block 。
我远离df.toPandas()
,它会带来很多开销。相反,我有一个辅助函数,它将 pyspark
查询的结果(即 Row
实例的列表)转换为 pandas.DataFrame
.
In [1]: from pyspark.sql.functions import col
In [2]: from pyspark.sql import SparkSession
In [3]: import numpy as np
In [4]: import pandas as pd
In [5]: def to_pandas(rows):
: row_dicts = [r.asDict() for r in rows]
: return pd.DataFrame.from_dict(row_dicts)
:
要查看此函数的实际效果,让我们制作一个小型示例数据框。
In [6]: from string import ascii_letters
: n = len(ascii_letters)
: df = pd.DataFrame({'id': range(n),
: 'num': np.random.normal(10,1,n),
: 'txt': list(ascii_letters)})
: df.head()
Out [7]:
id num txt
0 0 9.712229 a
1 1 10.281259 b
2 2 8.342029 c
3 3 11.115702 d
4 4 11.306763 e
In [ 8]: spark = SparkSession.builder.appName('Ops').getOrCreate()
: df_spark = spark.createDataFrame(df)
: df_spark
Out[ 9]: DataFrame[id: bigint, num: double, txt: string]
通过索引过滤来收集 block 。
In [10]: chunksize = 25
: for i in range(0, n, chunksize):
: chunk = (df_spark.
: where(col('id').between(i, i + chunksize)).
: collect())
: pd_df = to_pandas(chunk)
: print(pd_df.num.mean())
:
9.779573360741152
10.23157424753804
9.550750629366462
关于python - 来自 Spark 数据帧的 block topandas,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52997455/
我有一个具有以下架构的 pyspark 数据框: root |-- src_ip: integer (nullable = true) |-- dst_ip: integer (nullable
假设您正在通过 SparkContext 和 Hive 加载大型数据集。所以这个数据集然后分布在你的 Spark 集群中。例如,对数千个变量的观察(值 + 时间戳)。 现在您将使用一些 map/red
我从我们的数据仓库中提取数据,将其存储在一个 parquet 文件中,然后将所有 parquet 文件加载到一个 spark 数据帧中。到目前为止,一切都很好。但是,当我尝试使用 pandas.plo
我是 pyspark 的新手,我正在尝试使用 word_tokenize() 函数。这是我的代码: import nltk from nltk import word_tokenize import
我有一个 1000 万条记录的数据框。我的要求是我需要在 pandas 中对这些数据进行一些操作,而且我没有内存让所有 1000 万条记录一次都在 pandas 中。所以我希望能够将它分块并在每个 b
我有一个包含 1000 万条记录和 150 列的 Spark 数据框。我正在尝试将其转换为 pandas DF。 x = df.toPandas() # do some things to x 并且失
我有一个如下所示的 spark 数据框: topics.show(2) +-----+--------------------+--------------------+---------------
我是 Spark-DataFrame API 的初学者。 我使用此代码将制表符分隔的 csv 加载到 Spark Dataframe 中 lines = sc.textFile('tail5.csv'
pyspark 中的 toPandas 方法对于数字列中的空值不一致。有没有办法让它更一致? 一个例子 sc 是 sparkContext。 Spark 版本是2.3.2。我不确定如何包含笔记本结果,
我有这个代码: l = [('Alice', 1),('Jim',2),('Sandra',3)] df = sqlContext.createDataFrame(l, ['name', 'age']
我有一个由一台机器“c3.8xlarge”组成的 EMR 集群,在阅读了一些资源后,我了解到我必须允许相当数量的堆外内存,因为我使用的是 pyspark,所以我按如下方式配置了集群: 一名执行人: s
这个问题在这里已经有了答案: Requirements for converting Spark dataframe to Pandas/R dataframe (1 个回答) 关闭 6 年前。 我
我有 JSON 数据,我正在将这些数据读入一个包含多个字段的数据框中,根据两列对其进行重新分区,然后转换为 Pandas。 这项作业在仅 600,000 行数据上的 EMR 上不断失败,并带有一些模糊
我有一台机器“c3.8xlarge”的 EMR 集群,在阅读了几个资源后,我明白我必须允许大量的堆外内存,因为我使用的是 pyspark,所以我配置了集群如下: 一名执行人: spark.execut
我正在尝试将大小为 [2734984 行 x 11 列] 的 pyspark 数据帧转换为调用 toPandas() 的 Pandas 数据帧。虽然在使用 Azure Databricks Noteb
我是一名优秀的程序员,十分优秀!