Pyspark如何将行追加到BigQuery表
我有一个Pyspark程序,最后需要将行附加到Bigquery表中。我第一次能够创建表并将行加载到其中,但不知道如何继续追加更多行 这是我第一次加载到BQ的代码片段-Pyspark如何将行追加到BigQuery表,pyspark,google-bigquery,Pyspark,Google Bigquery,我有一个Pyspark程序,最后需要将行附加到Bigquery表中。我第一次能够创建表并将行加载到其中,但不知道如何继续追加更多行 这是我第一次加载到BQ的代码片段- mydf.write.format('bigquery') \ .option('table', 'my-project.my-dataset.my-table') \ .option("temporaryGcsBucket","my-bucket") \ .save() 有人能帮
mydf.write.format('bigquery') \
.option('table', 'my-project.my-dataset.my-table') \
.option("temporaryGcsBucket","my-bucket") \
.save()
有人能帮我吗
完全例外,我在“追加”行时得到-
原因:org.apache.spark.SparkException:写入时任务失败
排。
位于org.apache.spark.sql.execution.datasources.FileFormatWriter$.org$apache$spark$sql$execution$datasources$FileFormatWriter$$executeTask(FileFormatWriter.scala:257)
位于org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$write$1.apply(FileFormatWriter.scala:170)
位于org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$write$1.apply(FileFormatWriter.scala:169)
位于org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)
位于org.apache.spark.scheduler.Task.run(Task.scala:123)
位于org.apache.spark.executor.executor$TaskRunner$$anonfun$10.apply(executor.scala:408)
位于org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1360)
位于org.apache.spark.executor.executor$TaskRunner.run(executor.scala:414)
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
... 1更多原因:net.razorvine.pickle.PickleException:构造ClassDict的参数应为零(对于
rdkit.Chem.rdchem.Mol)
位于net.razorvine.pickle.objects.ClassDictConstructor.construct(ClassDictConstructor.java:23)
net.razorvine.pickle.Unpickler.load\u reduce(Unpickler.java:707)
位于net.razorvine.pickle.Unpickler.dispatch(Unpickler.java:175)
位于net.razorvine.pickle.Unpickler.load(Unpickler.java:99)
加载net.razorvine.pickle.Unpickler.load(Unpickler.java:112)
位于org.apache.spark.sql.execution.python.BatchEvalPythonExec$$anonfun$evaluate$1.apply(BatchEvalPythonExec.scala:90)
位于org.apache.spark.sql.execution.python.BatchEvalPythonExec$$anonfun$evaluate$1.apply(BatchEvalPythonExec.scala:89)
位于scala.collection.Iterator$$anon$12.nextCur(Iterator.scala:435)
位于scala.collection.Iterator$$anon$12.hasNext(Iterator.scala:441)
位于scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:409)
位于scala.collection.Iterator$$anon$11.hasNext(Iterator.scala:409)
位于org.apache.spark.sql.catalyst.expressions.GeneratedClass$GenerateEditorForCodeGenStage2.processNext(未知
(来源)
位于org.apache.spark.sql.execution.BufferedRowIterator.hasNext(BufferedRowIterator.java:43)
位于org.apache.spark.sql.execution.whisttagecodegenexec$$anonfun$13$$anon$1.hasNext(whisttagecodegenexec.scala:636)
位于org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$org$apache$spark$sql$execution$datasources$FileFormatWriter$$executeTask$3.apply(FileFormatWriter.scala:244)
位于org.apache.spark.sql.execution.datasources.FileFormatWriter$$anonfun$org$apache$spark$sql$execution$datasources$FileFormatWriter$$executeTask$3.apply(FileFormatWriter.scala:242)
位于org.apache.spark.util.Utils$.tryWithSafeFinallyAndFailureCallbacks(Utils.scala:1394)
位于org.apache.spark.sql.execution.datasources.FileFormatWriter$.org$apache$spark$sql$execution$datasources$FileFormatWriter$$executeTask(FileFormatWriter.scala:248)
只需将“保存模式”设置为“附加”:
df.write \
.format('bigquery') \
.option('table', 'my-project.my-dataset.my-table') \
.option("temporaryGcsBucket","my-bucket") \
.mode("append") \
.save()
如果查看源代码,连接器仅支持保存模式
覆盖
和附加
你好@Blackishop,我收到一个错误-py4j.protocol.Py4JJavaError:调用o75.save时出错:java.lang.RuntimeException:未能写入com.google.cloud.spark.BigQuery.BigQueryWriteHelper.writeDataFrameToBigQuery(BigQueryWriteHelper.scala:62)
-同时尝试“附加”行。你能帮忙吗?你好,这是你收到的完整错误信息吗?你能把完整的异常添加到问题中吗?嗨@Blackishop,我已经将异常消息添加到了我的原始问题中。你能帮我找出我做错了什么吗?这个错误看起来非常普遍,也许通过更多关于BigQuery模式的上下文,我们可以找出什么是错的。