2016-09-15 3 views
0

Ich verwende pySpark im Spark-Service in Bluemix, um etwas in meinen Daten zu transformieren und dann in DashDB, auch in Bluemix schreiben. Aber wenn ich versuche, Daten zu laden, erhalte ich den folgenden Fehler:bluemix pyspark Fehler beim Aufruf von jdbc

Py4JJavaError: Beim Aufruf von o111.jdbc ist ein Fehler aufgetreten. : org.apache.spark.SparkException: Auftrag wegen Phasenfehlers abgebrochen: Aufgabe 0 in Stufe 4.0 ist 10 Mal fehlgeschlagen, letzter Fehler: Verlorene Aufgabe 0.9 in Stufe 4.0 (TID 23, yp-spark-dal09-env5-0045) : com.ibm.db2.jcc.am.BatchUpdateException: [jcc] [t4] [102] [10040] [4.19.26] Stapelfehler. Die Charge wurde eingereicht, aber mindestens eine Ausnahme trat bei einem einzelnen Mitglied der Charge auf. Verwenden Sie getNextException(), um die Ausnahmen für bestimmte Batch-Elemente abzurufen. ERRORCODE = -4229, SQLSTATE = null

Ich habe bereits versucht, eine neue DashDB zu erstellen, aber ich erhalte den gleichen Fehler. Dann habe ich versucht, ein anderes Notebook zu erstellen, aber es wird auch nicht funktionieren. Ich habe versucht, alle Kernel zu stoppen und nur einen Kernel pro Zeit ausführen, wird nicht funktionieren.

Alle Notebooks, die ich versuche, Daten aus einem Datenrahmen zu schreiben Ich erhalte den gleichen Fehler, aber in denselben Fällen werden die Daten geladen und in anderen nicht.

Dies ist der Code, den ich schreiben bin mit:

for num in range(0,22): 
(shared_df_first 
    .select(
     Func.col('Customer').alias("CUSTOMER"), 
     Func.col('Customer Environment').alias("CUST_ENV"), 
     Func.col('Device').alias("DEVICE"), 
     Func.col('User ID').alias("USER_ID"), 
     Func.col('Date').alias("DATE"), 
     Func.col('Time').alias("TIME"), 
     Func.col('Requester').alias("REQUESTER"), 
     Func.col('Manager').alias("MANAGER"), 
     Func.col('Manager Mail').alias("MANAGER_MAIL"), 
     Func.col('Ticket').alias("TICKET"), 
     Func.col('Request').alias("REQUEST"), 
     Func.col('Teste').alias("TESTE"), 
     Func.col('Approver USERID').alias("APPROVER_USERID"), 
     Func.col('Approver Name').alias("APPROVER_NAME"), 
     Func.col('Period in hours').alias("PERIOD"), 
     Func.col('Business Need').alias("BUSINESS_NEED"), 
     Func.col('Password Periodic Changable').alias("PASSWORD_PERIODIC_CHANGABLE"), 
     Func.col('Is Pre Approved?').alias("IS_PRE_APPROVED"), 
     Func.col('Has Personal User ID?').alias("HAS_PERSONAL_USER_ID"), 
     Func.col('Check in way').alias("CHECK_IN_WAY"), 
     Func.col('SLA').alias("SLA"), 
     Func.col('Invalid Business Need').alias("BUSINESS_NEED_INVALID") 
    ) 
    .write 
    .jdbc("jdbc:db2://bluemix05.bluforcloud.com:50000/BLUDB", "DASH014638.WATSON_UAT_DEV", "append", propertiesDBDash 
) 
print num + 1 



df = ds_clean.toDF(["account_id","customer","device_name","device_os","user_id","user_id_type","creation_date","last_logon","password_is_never_expires","responsible", 
       "privileges","user_id_status"]) 
propertiesDBDash = { 
       "user":"dash014638", 
       "password":"pwd"} 
df.write.mode("append").jdbc("jdbc:db2://bluemix05.bluforcloud.com:50000/BLUDB", "DASH014638.DORMANT_PROD",properties=propertiesDBDash) 

df = ds_clean.toDF(["REQUEST_NUMBER","TYPE_TICKET","SOLUTIONER","CUSTOMER","DELIVERY","OPEN_DATE","OPEN_TIME","CLOSE_DATE","CLOSE_TIME","SERVICE","DEVICE","PLATFORM","REQUESTER","REQUESTER_MANAGER_MAIL","SLA","ELAPSED_TIME","SLA_STATUS","URGENCY","ACTION","REQUEST_STATUS"]) 

propertiesDBDash = { 
       "user":"dash014638", 
       "password":"pwd"} 
df.write.mode("append").jdbc("jdbc:db2://bluemix05.bluforcloud.com:50000/BLUDB", "DASH014638.WATSON_REQUEST_NEW",properties=propertiesDBDash) 

Antwort

0

Es ist sieht aus wie das Bluemix nicht alle Fehler, die durch dashDB abgerufen wird zeigen. Das eigentliche Problem liegt also darin, dass ich versuche, Daten einzufügen, die größer sind als das in dashDB angegebene Datenfeld.

Verwandte Themen