是否有更有效的方法将pandas数据框架转换为引发数据框架



我有一个pandas dataframe data_pandas,其大约有半百万行和30000列。我希望这是在Spark DataFrame data_spark中,我实现了以下方面的实现:

data_spark = sqlContext.createDataFrame(data_pandas)

我正在研究R3.8xlarge驱动程序,其中10位具有相同配置的工人。但是上述操作需要永远并返回OOM错误。有我可以尝试的替代方法吗?

HDF格式的源数据,因此我无法直接将其作为火花数据框架读取。

您可以尝试使用箭头,这可以使其更有效。

spark.conf.set("spark.sql.execution.arrow.enabled","true)

有关更多详细信息,请参阅:https://bryancutler.github.io/topandas/

一种方法可以是从批处理读取数据框架而不是一次读取数据,一种方法是使用下面的代码将其分为20个块(的某些部分)这里和这里的问题的解决方案)

def unionAll(*dfs):
    ' by @zero323 from here: http://stackoverflow.com/a/33744540/42346 '
    first, *rest = dfs  # Python 3.x, for 2.x you'll have to unpack manually
    return first.sql_ctx.createDataFrame(
        first.sql_ctx._sc.union([df.rdd for df in dfs]),
        first.schema
    )
df_list = []
for chunk in np.array_split(df1,20):
    df_list.append(sqlContext.createDataFrame(chunk))
df_all = unionAll(df_list)

相关内容

  • 没有找到相关文章

最新更新