org.apache.spark.sql.execution.datasources.BaseWriterContainer.newOutputWriter(WriterContainer.scala:131)中的NPL

时间:2017-06-27 02:00:04

标签: apache-spark-sql

我正在添加sparksql的外部数据源,我的数据源是一种文件格式。我扩展了FileFormat特性并实现了prepareWrite方法来创建我自己的OutputWriterFactory和OutputWriter。

当我在火花局部模式下测试时,效果很好。

但是当我尝试写下spark-shell

scala> df.write.format("cn.edu.thu.tsfile").save("/tsfile/out5")

我有一个NPE。

java.lang.NullPointerException
at org.apache.spark.sql.execution.datasources.BaseWriterContainer.newOutputWriter(WriterContainer.scala:131)
at org.apache.spark.sql.execution.datasources.DefaultWriterContainer.writeRows(WriterContainer.scala:247)
at org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelationCommand$$anonfun$run$1$$anonfun$apply$mcV$sp$1.apply(InsertIntoHadoopFsRelationCommand.scala:143)
at org.apache.spark.sql.execution.datasources.InsertIntoHadoopFsRelationCommand$$anonfun$run$1$$anonfun$apply$mcV$sp$1.apply(InsertIntoHadoopFsRelationCommand.scala:143)
at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:70)
at org.apache.spark.scheduler.Task.run(Task.scala:86)
at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:274)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:745)

这是我的存储库 https://github.com/qiaojialin/tsfile-spark-connector

看起来spark根本不会调用prepareWrite方法。

以前有人见过这个吗?感谢。

1 个答案:

答案 0 :(得分:0)

我知道我在火花集群中有两个罐子。一个是/ spark / jars,另一个是--jars添加。我删除了/spark/jars/connector.jar,一切正常。