Pyspark для Netezza написать вопрос - PullRequest
0 голосов
/ 04 мая 2020

При записи из Pyspark в Netezza я постоянно получаю следующую ошибку (проблема сохраняется при увеличении размера фрейма данных, нет проблем при добавлении небольших фреймов данных с 10–60 строками):

org.netezza.error.NzSQLException: failed to create external table for bulk load
    at org.netezza.sql.NzPreparedStatament.executeBatch(NzPreparedStatament.java:1140)
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$.savePartition(JdbcUtils.scala:667)
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$saveTable$1.apply(JdbcUtils.scala:834)
    at org.apache.spark.sql.execution.datasources.jdbc.JdbcUtils$$anonfun$saveTable$1.apply(JdbcUtils.scala:834)
    at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$28.apply(RDD.scala:935)
    at org.apache.spark.rdd.RDD$$anonfun$foreachPartition$1$$anonfun$apply$28.apply(RDD.scala:935)
    at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2101)
    at org.apache.spark.SparkContext$$anonfun$runJob$5.apply(SparkContext.scala:2101)
    at org.apache.spark.scheduler.ResultTask.runTask(ResultTask.scala:90)
    at org.apache.spark.scheduler.Task.run(Task.scala:121)
    at org.apache.spark.executor.Executor$TaskRunner$$anonfun$10.apply(Executor.scala:408)
    at org.apache.spark.util.Utils$.tryWithSafeFinally(Utils.scala:1360)
    at org.apache.spark.executor.Executor$TaskRunner.run(Executor.scala:414)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

У меня есть все права на создание внешних таблиц и обычных таблиц в Netezza. Я могу создавать внешние таблицы в Netezza, используя того же пользователя непосредственно в Netezza.

Ниже приведен мой код:

failed_df \
    .write \
    .format(("jdbc")) \
    .options(url='jdbc:netezza://###/',
             driver='org.netezza.Driver',
             dbtable='###',
             user='abc',
             password='***') \
    .mode('append') \
    .save()
...