我正在尝试测量在 Amazon s3 中(在特定分区下)读取和写入 parquet 文件需要多长时间 为此,我编写了一个脚本,该脚本只需读取文件然后将其写回:
val df = sqlContext.read.parquet(path + "p1.parquet/partitionBy=partition1")
df.write.mode("overwrite").parquet(path + "p1.parquet/partitionBy=partition1")
但是我遇到了空指针异常。我尝试在两者之间添加 df.count ,但遇到了相同的错误。
最佳答案
错误原因是Spark只在要使用的时候才读取数据。这会导致 Spark 在尝试覆盖文件的同时从文件中读取数据。这会导致一个问题,因为读取时数据无法被覆盖。
我建议保存到临时位置,因为这是出于计时目的。另一种方法是在读取时对数据使用 .cache()
,执行强制读取的操作(以及实际缓存数据),然后覆盖文件。
关于scala - 写入 Parquet 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46898778/