【问题标题】:Cannot convert a json file to parquet using spark无法使用火花将 json 文件转换为镶木地板
【发布时间】:2016-04-15 16:01:01
【问题描述】:

我使用的是 spark 1.6.0。我有一个 json 文件。如下所示。

{"id" : "1201", "name" : "shamir", "age" : "25"}

我正在尝试将其转换为镶木地板。下面是我的代码。

val sqlContext = new org.apache.spark.sql.SQLContext(sc)
import sqlContext.implicits._
import sqlContext.sql
val employee = sqlContext.read.json("emp.json")
employee.write.parquet("employee.parquet")

我遇到了一个巨大的错误。我做错了什么?

这是我得到的错误。

【问题讨论】:

  • 你必须粘贴你得到的错误。也请告诉我您使用的 spark 版本。
  • @DurgaViswanathGadiraju 我已经粘贴了我遇到的错误。
  • 我使用的是 spark 1.6.0
  • 复制完整的错误文本(堆栈跟踪和错误消息)并将其粘贴到您的问题中。不要只显示快照,因为它没有显示所有信息。
  • 请剪切并粘贴您的错误文本。不是截图。

标签: json scala apache-spark parquet


【解决方案1】:

如果没有错误消息,几乎无法回答,但以下两行应该可以工作(在 Spark 1.5.2 上测试):

val employee = sqlContext.jsonFile("emp.json")
employee.saveAsParquetFile("employee.parquet")
//Equivalent to :
employee.write.format("parquet").mode(SaveMode.ErrorIfExists).save("employee.parquet")

如果不是,则可能是您的系统配置或输出路径可访问性的问题。

注意employee.write.parquet("employee.parquet") 等价于employee.write.format("parquet").save("employee.parquet")

【讨论】:

  • 我正在使用 Windows。误差太大。我无法在命令提示符中完全看到它。我试过你的代码。我遇到了同样的错误。
  • @eddard.stark 您应该确定错误是由读取 json 文件还是写入 parquet 文件引起的。如果是前者:您是否检查过emp.json 与您要启动的终端中的当前目录spark-shell 是否位于同一目录中?
  • 我使用的是 spark 1.6.0
  • @eddard.stark 这肯定是配置问题。你检查过你当前目录是否有写权限吗?
  • @eddard.stark 在启动你的 spark-shell 之前,进入你的 spark 配置目录;将log4j.properties.example 文件复制到log4j.properties 并进行编辑。更改 appender log4j.appender.FILE=org.apache.log4j.FileAppenderlog4j.appender.FILE.File=SOME_PATH/log.out 这样你就可以在一个文件中获取整个日志(tutorialspoint.com/log4j/log4j_logging_files.htm
【解决方案2】:

在保存之前尝试合并到更少的分区

employee.coalesce(numPartitions).write.mode(SaveMode.Overwrite).parquet("employee.parquet")

【讨论】:

    猜你喜欢
    • 2019-05-26
    • 2016-01-18
    • 1970-01-01
    • 2020-01-10
    • 2016-04-16
    • 1970-01-01
    • 2018-11-09
    • 2018-12-20
    • 1970-01-01
    相关资源
    最近更新 更多