5

Ho uno scenario in cui riceverò i dati di streaming che vengono elaborati dal mio programma di streaming spark e l'output per ciascun intervallo viene aggiunto al mio tavolo cassandra esistente.java.lang.UnsupportedOperationException: 'La scrittura su una tabella Cassandra non vuota non è consentita

Attualmente il mio programma di streaming spark genera un frame di dati che ho bisogno di salvare nella mia tabella cassandra. Il problema che sto attualmente di fronte è che non sono in grado di aggiungere dati/righe in mio tavolo cassandra esistente

dff.write.format("org.apache.spark.sql.cassandra").options(Map("table" -> "xxx", "yyy" -> "retail")).save() 

avevo letto nel seguente link http://rustyrazorblade.com/2015/08/migrating-from-mysql-to-cassandra-using-spark/ dove ha superato mode = "append" quando uso sotto comando nel metodo Save, ma il suo errore di sintassi lancio

Inoltre ero nt in grado di capire dove ho bisogno di risolvere dal link sottostante https://groups.google.com/a/lists.datastax.com/forum/#!topic/spark-connector-user/rlGGWQF2wnM

Hai bisogno di aiutare come come risolvere questo problema issue.I'm scrivere la mia scintilla lavori di streaming in scala

risposta

8

Credo che bisogna farlo nel modo seguente:

dff.write.format("org.apache.spark.sql.cassandra").mode(SaveMode.Append).options(Map("table" -> "xxx", "yyy" -> "retail")).save() 

Il modo cassandra gestisce le forze di dati di fare i cosiddetti 'upserts' - si deve ricordare che un inserto potrebbe sovrascrivere alcune delle righe dove la chiave primaria del record già memorizzato è la stessa di una chiave primaria del reccord inserito. Cassandra è un database "write-fast", quindi non controlla l'esistenza dei dati prima di scrivere.

Problemi correlati