首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用熊猫代替火种

用熊猫代替火种
EN

Stack Overflow用户
提问于 2019-10-20 20:18:49
回答 1查看 107关注 0票数 1

背景:我正在使用齐柏林飞艇笔记本进行分析。目标是使用而不是使用pySpark dataframe。熊猫有一些我用过的统计功能。编写.py文件来测试一个样本数据文件,所有的计算等等。

用例:我的数据文件( CSV格式)有模拟数据。通常列数为45,000列。目前,我有兴趣阅读前20,000篇专栏。行数通常为200行。

代码语言:javascript
运行
复制
print('1 : ' , datetime.now())
sparkDF=spark.read.csv(filePath + '/' + filename,header=True,maxColumns=50000)
print('Built sparkDF with Rows: ' , sparkDF.count() , ' Column Count: ' , len(sparkDF.columns))
print('2 : ' , datetime.now())
sparkDF1 = sparkDF.select(sparkDF.columns[0:20000])
print('Built sparkDF1 with Rows: ' , sparkDF1.count() , ' Column Count: ' , len(sparkDF1.columns))
print('3 : ' , datetime.now())
exposures = sparkDF1.toPandas()
print('Built exposures with Rows: ' , exposures.shape[0] , ' Column Count: ' , exposures.shape[1])
print('4 : ' , datetime.now())

1 :  2019-10-17 16:34:06.725326
Built sparkDF with Rows:  107  Column Count:  40002
2 :  2019-10-17 16:40:04.171931
Built sparkDF1 with Rows:  107  Column Count:  20001
3 :  2019-10-17 16:51:12.465739
Built exposures with Rows:  107  Column Count:  20001
4 :  2019-10-17 16:58:25.65423

问题:

  1. Pandas不能读取HDFS上的数据文件。
  2. 为了解决这个问题,我用火花读取文件,然后转换成熊猫。

构建数据帧的时间相当长。

我必须处理2900个这样的文件。需要一些建议和替代。

EN

回答 1

Stack Overflow用户

发布于 2019-10-20 20:53:00

我看到你在从一个文件中读取多个文件。要优化这个过程,您可以做的是读取.csv文件的整个目录,而不是一次读取一个文件(如果您的模式与所有类似于您的情况的文件相同):

代码语言:javascript
运行
复制
file_path = "hdfs://path/to/multiple/files/"

df = (
        spark.read.format("com.databricks.spark.csv")
            .options(header="true", inferSchema="true")
            .load(file_path)
    )
pdf = df.toPandas()

这将优化您的I/O的数量。即使您在同一个文件夹中有10个文件或200个文件或2900个文件,您的读取速度也会比单独读取一个文件的速度更快。

注意事项:上面的解决方案不适用于嵌套文件夹。

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

https://stackoverflow.com/questions/58476951

复制
相关文章

相似问题

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