2017-06-27 3 views
-1

私はsparksqlの外部データソースを追加しています。私のデータソースはファイルフォーマットです。私はFileFormatの特性を拡張し、独自のOutputWriterFactoryとOutputWriterを作成するためのprepareWriteメソッドを実装します。NPL at org.apache.spark.sql.execution.datasources.BaseWriterContainer.newOutputWriter(WriterContainer.scala:131)

私はスパークローカルモードでテストするとうまく動作します。

しかし、ときに私は、私はNPEを得た火花シェル

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

に書いてみます。ここで

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) 

は、それは火花が全くprepareWriteメソッドを呼び出していないことになります私のリポジトリ https://github.com/qiaojialin/tsfile-spark-connector

です。

誰でもこれまでに会いましたか?ありがとう。

答えて

0

私はスパーククラスターに2つの瓶があることを確認しています。 1つは/ spark/jarsにあり、もう1つは--jarsに追加されています。 /spark/jars/connector.jarを削除しても問題ありません。