我正在尝试测量在亚马逊s3中读取和编写镶木地板文件需要多长时间(在特定分区下) 为此,我编写了一个简单读取文件的脚本,然后将其写回:
val df = sqlContext.read.parquet(path + "p1.parquet/partitionBy=partition1")
df.write.mode("overwrite").parquet(path + "p1.parquet/partitionBy=partition1")
但是我得到一个空指针异常。我尝试在其间添加df.count
,但得到了同样的错误。
答案 0 :(得分:0)
错误的原因是Spark仅在使用时读取数据。这导致Spark在尝试覆盖文件的同时从文件读取数据。这会导致问题,因为在阅读时无法覆盖数据。
我建议保存到临时位置,因为这是为了计时目的。另一种方法是在读取时对数据使用.cache()
,执行强制读取的操作(以及实际缓存数据),然后覆盖文件。