我正在使用很多行表测试Spark性能。 我做的很简单 准备csv文件,该文件有许多行,只有2个数据记录。 例如,csv文件如下所示:
col000001,col000002,,,,,,,col100000
dtA000001,dtA000002,,,,,,,,dtA100000
dtB000001,dtB000002,,,,,,,,dtB100000
dfdata100000 = sqlContext.read.csv('../datasets/100000c.csv', header='true')
dfdata100000.registerTempTable("tbl100000")
result = sqlContext.sql("select col000001,ol100000 from tbl100000")
然后按show(1)
获得1行%%time
result.show(1)
文件大小如下(非常小)。 文件名显示行数:
$ du -m *c.csv
3 100000c.csv
1 10000c.csv
1 1000c.csv
1 100c.csv
1 20479c.csv
2 40000c.csv
2 60000c.csv
3 80000c.csv
结果如下:
如您所见,执行时间呈指数级增长。
示例结果:
+---------+---------+
|col000001|col100000|
+---------+---------+
|dtA000001|dtA100000|
+---------+---------+
only showing top 1 row
CPU times: user 218 ms, sys: 509 ms, total: 727 ms
Wall time: 53min 22s
问题1:这是否可以接受?为什么执行时间呈指数级增长?
问题2:还有其他方法可以做得更快吗?