scala - 写入 Parquet 时出现 NullPointerException

标签 scala apache-spark parquet

我正在尝试测量在 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/

相关文章:

scala - Apache Spark 聚合 : aggregate column based on another column value

performance - Spark不忽略空分区

python - 使用 pyspark 将 zip 压缩的 csv 转换为 parquet

hive - 创建Hive表以从Parquet/Avro模式读取Parquet文件

Scala:版本之间的二进制不兼容

scala - 加载的 html 从父目录请求静态内容

scala - 什么是类型,什么是 scala 中的类型构造函数

windows - winutils.exe chmod 命令未设置权限

apache-spark - 如何从Apache Spark的数据框中选择大小相同的分层样本?

hadoop - 将 Spark RDD 保存到 Hive 表