/** * This constructor gives the option to only convert certain fields from the schema * @param inputSchema * @param conf * @param fieldsToConvert * @param requiredFields */ public CassandraSinkCQLDataConverter(@NonNull final Schema inputSchema, @NonNull final Configuration conf, @NonNull final Optional<Set<String>> fieldsToConvert, @NonNull final List<String> requiredFields, @NonNull final TimestampInfo timestampInfo, @NonNull final ErrorExtractor errorExtractor) { super(conf, errorExtractor); if (fieldsToConvert.isPresent()) { validate(fieldsToConvert.get(), requiredFields); } this.inputSchemaJson = inputSchema.toString(); this.requiredFields = Collections.unmodifiableList(requiredFields); this.fieldsToConvert = fieldsToConvert; this.timestampInfo = timestampInfo; this.keyspaceName = conf.getProperty(CassandraSinkConfiguration.KEYSPACE, ""); this.tableName = conf.getProperty(CassandraSinkConfiguration.TABLE_NAME, ""); }
converter.setKeyspaceName(conf.getKeyspace()); converter.setTableName(conf.getTableName()); final RDDWrapper<Statement> payloadWrapper = this.converter.map(data);
new CassandraSinkCQLDataConverter( avroSchema, new Configuration(),
private void testWriteAllFieldsMockDataToCassandra(boolean addLongTimestamp) { final JavaRDD<AvroPayload> testData = AvroPayloadUtil.generateTestData(this.jsc.get(), 100, StringTypes.EMPTY); final List<String> schemaFields = AvroPayloadUtil.getSchemaFields(); final List<String> partitionKeys = Collections.singletonList(schemaFields.get(0)); final List<ClusterKey> clusteringKeys = Collections.singletonList( new ClusterKey(schemaFields.get(1), ClusterKey.Order.DESC)); final List<String> requiredFields = Arrays.asList(schemaFields.get(0), schemaFields.get(1)); final Optional<String> timestamp = addLongTimestamp ? Optional.of(TEST_TIMESTAMP) : Optional.absent(); final TimestampInfo tsInfo = new TimestampInfo(timestamp, true); final CassandraSinkCQLDataConverter converter = new CassandraSinkCQLDataConverter(AvroPayloadUtil.getAvroTestDataSchema(StringTypes.EMPTY), new Configuration(), Optional.of(new HashSet<>(schemaFields)), requiredFields, tsInfo, new ErrorExtractor()); final CassandraSchemaConverter schemaConverter = new CassandraSchemaConverter(KEY_SPACE, TABLE, tsInfo, Optional.absent()); final CassandraSchema schema = schemaConverter.convertToExternalSchema( AvroPayloadUtil.getAvroTestDataSchema(StringTypes.EMPTY)); final Optional<Long> ttl = Optional.of(10000L); final CassandraSinkSchemaManager schemaManager = new CassandraSinkSchemaManager(schema, partitionKeys, clusteringKeys, ttl); final CassandraSinkConfiguration conf = initializeConfiguration(false, addLongTimestamp); final CassandraClientSink sink = new CassandraClientSink(converter, schemaManager, conf); sink.write(testData); validateCassandraTable(100, false, addLongTimestamp); }
new CassandraSinkCQLDataConverter(avroSchema, new Configuration(), Optional.of(new HashSet<>(schemaFields)),