私は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
です。
誰でもこれまでに会いましたか?ありがとう。