[ https://issues.apache.org/jira/browse/CASSANDRA-13670?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16115800#comment-16115800 ]
Varun Barala commented on CASSANDRA-13670: ------------------------------------------ [~arpanps] Can you please help me to reproduce this? {code:java} import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.nio.ByteBuffer; import java.util.ArrayList; import java.util.List; import org.apache.cassandra.dht.Murmur3Partitioner; import org.apache.cassandra.io.sstable.CQLSSTableWriter; import org.supercsv.io.CsvListReader; import org.supercsv.prefs.CsvPreference; /** * * @author ooo * */ public class CqlWriterTest { private static final String createDDL = "CREATE TABLE testing.table2 (pk1 text,pk2 text,ck1 text,ck2 text,nk1 text,nk2 text,PRIMARY KEY (( pk1, pk2 ), ck1, ck2));"; private static final String csvFilePath = "/home/ooo/cassandra3.0.14/apache-cassandra-3.0.14/var.csv"; private static final String insertDDL = "insert into testing.table2 (pk1,pk2,ck1,ck2,nk1,nk2) VALUES (?,?,?,?,?,?);"; private static final String inputDir = "/home/ooo/cassandra3.0.14/apache-cassandra-3.0.14/sstables/tmp"; public static void main(String[] args) throws IOException { CQLSSTableWriter.Builder builder = CQLSSTableWriter.builder(); builder.inDirectory(inputDir).forTable(createDDL).using(insertDDL).withPartitioner(new Murmur3Partitioner()); CQLSSTableWriter writer = builder.build(); try (BufferedReader reader = new BufferedReader(new FileReader(csvFilePath)); CsvListReader csvReader = new CsvListReader(reader, CsvPreference.STANDARD_PREFERENCE);) { List<String> line; while ((line = csvReader.read()) != null) { List<ByteBuffer> bbl = new ArrayList<>(); for (String l : line) { bbl.add(ByteBuffer.wrap(l.getBytes())); } writer.rawAddRow(bbl); // If I use writer.addRow(); it works fine. } } finally { writer.close(); } } } {code} It's working fine in my case. {{writer.addRow()}} accepts object values not bin values. java doc says:- {code:java} ** * Adds a new row to the writer. * <p> * Each provided value type should correspond to the types of the CQL column * the value is for. The correspondance between java type and CQL type is the * same one than the one documented at * www.datastax.com/drivers/java/2.0/apidocs/com/datastax/driver/core/DataType.Name.html#asJavaClass(). * <p> * If you prefer providing the values directly as binary, use * {@link #rawAddRow} instead. * * @param values the row values (corresponding to the bind variables of the * insertion statement used when creating by this writer). * @return this writer. */ public CQLSSTableWriter addRow(List<Object> values) {code} > NullPointerException while closing CQLSSTableWriter > --------------------------------------------------- > > Key: CASSANDRA-13670 > URL: https://issues.apache.org/jira/browse/CASSANDRA-13670 > Project: Cassandra > Issue Type: Bug > Components: Tools > Environment: Linux > Reporter: Arpan Khandelwal > Fix For: 3.0.14 > > > Reading data from csv file and writing using CQLSSTableWriter. > {code:java} > CQLSSTableWriter.Builder builder = CQLSSTableWriter.builder(); > > builder.inDirectory(outputDir).forTable(createDDL).using(insertDML).withPartitioner(new > Murmur3Partitioner()); > CQLSSTableWriter writer = builder.build(); > {code} > {code:java} > try (BufferedReader reader = new BufferedReader(new FileReader(csvFilePath)); > CsvListReader csvReader = new CsvListReader(reader, > CsvPreference.STANDARD_PREFERENCE);) { > List<String> line; > while ((line = csvReader.read()) != null) { > List<ByteBuffer> bbl = new ArrayList<>(); > for (String l : line) { > bbl.add(ByteBuffer.wrap(l.getBytes())); > } > writer.rawAddRow(bbl); > // If I use writer.addRow(); it works fine. > } > } finally { > writer.close(); > } > {code} > Getting below exception > {code:java} > java.lang.RuntimeException: java.lang.NullPointerException > at > org.apache.cassandra.io.sstable.SSTableSimpleUnsortedWriter.close(SSTableSimpleUnsortedWriter.java:136) > at > org.apache.cassandra.io.sstable.CQLSSTableWriter.close(CQLSSTableWriter.java:280) > at com.cfx.cassandra.SSTableCreator.execute(SSTableCreator.java:155) > at com.cfx.cassandra.SSTableCreator.main(SSTableCreator.java:84) > Caused by: java.lang.NullPointerException > at > org.apache.cassandra.io.sstable.format.SSTableReader.saveSummary(SSTableReader.java:910) > at > org.apache.cassandra.io.sstable.format.big.BigTableWriter$IndexWriter.doPrepare(BigTableWriter.java:472) > at > org.apache.cassandra.utils.concurrent.Transactional$AbstractTransactional.prepareToCommit(Transactional.java:173) > at > org.apache.cassandra.io.sstable.format.big.BigTableWriter$TransactionalProxy.doPrepare(BigTableWriter.java:303) > at > org.apache.cassandra.utils.concurrent.Transactional$AbstractTransactional.prepareToCommit(Transactional.java:173) > at > org.apache.cassandra.io.sstable.format.SSTableWriter.prepareToCommit(SSTableWriter.java:229) > at > org.apache.cassandra.io.sstable.SimpleSSTableMultiWriter.prepareToCommit(SimpleSSTableMultiWriter.java:97) > at > org.apache.cassandra.io.sstable.SSTableTxnWriter.doPrepare(SSTableTxnWriter.java:77) > at > org.apache.cassandra.utils.concurrent.Transactional$AbstractTransactional.prepareToCommit(Transactional.java:173) > at > org.apache.cassandra.utils.concurrent.Transactional$AbstractTransactional.finish(Transactional.java:184) > at > org.apache.cassandra.io.sstable.SSTableTxnWriter.finish(SSTableTxnWriter.java:92) > at > org.apache.cassandra.io.sstable.SSTableSimpleUnsortedWriter$DiskWriter.run(SSTableSimpleUnsortedWriter.java:210) > {code} > If I use writer.addRow(); instead of using writer.rawAddRow() it works fine. -- This message was sent by Atlassian JIRA (v6.4.14#64029) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org