星火 2.2.0。写入 AVRO 失败

SparkR 2.2.0. Writing AVRO fails

我对 Spark 比较陌生,从 SparkR 访问它,并尝试将 AVRO 文件写入磁盘,但我一直收到错误提示 Task failed while writing rows

我是 运行 SparkR 2.2.0 -SNAPSHOT,Scala 版本 2.11.8,并通过以下方式启动我的 SparkR 会话:

sparkR.session(master = "spark://[some ip here]:7077",
           appName = "nateSparkRAVROTest",
           sparkHome = "/home/ubuntu/spark",
           enableHiveSupport = FALSE,
           sparkConfig = list(spark.executor.memory="28g"),
           sparkPackages =c("org.apache.hadoop:hadoop-aws:2.7.3", "com.amazonaws:aws-java-sdk-pom:1.10.34", "com.databricks:spark-avro_2.11:3.2.0"))

我想知道我是否需要设置或安装任何特殊的东西?我在我的会话启动命令中包含了 com.databricks:spark-avro_2.11:3.2.0 包,看到它在启动会话时下载了该包,并且我正在尝试通过此命令编写 AVRO 文件:

SparkR::write.df(myFormalClassSparkDataFrameObject, path = "/home/nathan/SparkRAVROTest/", source = "com.databricks.spark.avro", mode="overwrite")

我希望有更多使用 SparkR 经验的人遇到过这个错误并能提供一些见解。感谢您的时间。

亲切的问候, 内特

我能够在我的 Spark 配置中使用 com.databricks:spark-avro_2.11:4.0.0 让它工作。

一个有用的示例 SparkR 配置是这样的:

SparkR::sparkR.session(master="local[*]", 
                   sparkConfig = list(spark.driver.memory="14g",
                                      spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version="2",
                                      spark.hadoop.mapreduce.fileoutputcommitter.marksuccessfuljobs = "FALSE",
                                      spark.kryoserializer.buffer.max="1024m",
                                      spark.speculation="FALSE",
                                      spark.referenceTracking="FALSE"
                   ), 
                   sparkPackages =c("org.apache.hadoop:hadoop-aws:2.7.3",
                    "com.amazonaws:aws-java-sdk:1.7.4",
                     "com.amazonaws:aws-java-sdk-pom:1.11.221",
                     "com.databricks:spark-avro_2.11:4.0.0",
                      "org.apache.httpcomponents:httpclient:4.5.2"))