final CassandraSchema schema = schemaConverter.convertToExternalSchema(avroSchema);
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 CassandraSinkDataConverter dataconverter = new CassandraSinkDataConverter(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 CassandraSSTableSink sink = new CassandraSSTableSink(dataconverter, schemaManager, conf); sink.write(testData); validateCassandraTable(100, false, addLongTimestamp); }
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); }
final CassandraSchema schema = schemaConverter.convertToExternalSchema(avroSchema);
final CassandraSchema cassandraSchema = schemaConverter.convertToExternalSchema(avroSchema);
final CassandraSchema cassandraSchema = schemaConverter.convertToExternalSchema(avroSchema);
@Test public void testConvertCommonToCassandraSchemaWithStringTimestamp() { final Schema record = SchemaBuilder.record("commonSchema") .fields() .name("field0").type().intType().noDefault() .endRecord(); final TimestampInfo tsInfo = new TimestampInfo(Optional.of("10000"), false); final CassandraSchemaConverter converter = new CassandraSchemaConverter("testKeyspace", "testTableName", tsInfo, Optional.absent()); final CassandraSchema cassSchema = converter.convertToExternalSchema(record); Assert.assertTrue(cassSchema.getFields().size() == 2); final CassandraSchemaField intField = cassSchema.getFields().get(0); Assert.assertEquals("field0", intField.getFieldName()); Assert.assertEquals(CassandraSchemaField.convertFromAvroType( SchemaTestUtil.getSchema(CassandraSchemaField.INT_TYPE)), intField.getType()); final CassandraSchemaField timestampField = cassSchema.getFields().get(1); Assert.assertEquals(SchemaUtil.DISPERSAL_TIMESTAMP, timestampField.getFieldName()); Assert.assertEquals(CassandraSchemaField.convertFromAvroType( SchemaTestUtil.getSchema(CassandraSchemaField.STRING_TYPE)), timestampField.getType()); }
@Test public void testConvertCommonToCassandraSchemaWithFilteredFields() { final Schema record = SchemaBuilder.record("commonSchema") .fields() .name("field0").type().intType().noDefault() .name("field1").type().doubleType().noDefault() .name("field2").type().stringType().noDefault() .name("field3").type().booleanType().noDefault() .endRecord(); final CassandraSchemaConverter converter = new CassandraSchemaConverter("testKeyspace", "testTableName", Optional.of(new HashSet<>(Arrays.asList("field2", "field3")))); final CassandraSchema cassSchema = converter.convertToExternalSchema(record); Assert.assertTrue(cassSchema.getFields().size() == 2); Assert.assertEquals("field2", cassSchema.getFields().get(0).getFieldName()); Assert.assertEquals("field3", cassSchema.getFields().get(1).getFieldName()); Assert.assertEquals(CassandraSchemaField.convertFromAvroType( SchemaTestUtil.getSchema(CassandraSchemaField.STRING_TYPE)), cassSchema.getFields().get(0).getType()); Assert.assertEquals(CassandraSchemaField.convertFromAvroType( SchemaTestUtil.getSchema(CassandraSchemaField.BOOLEAN_TYPE)), cassSchema.getFields().get(1).getType()); } }
@Test public void testConvertCommonToCassandraSchemaRemovesFieldStartingWithUnderscore() { final Schema record = SchemaBuilder.record("commonSchema") .fields() .name("_field0").type().intType().noDefault() .name("_field1").type().doubleType().noDefault() .name("_field2").type().stringType().noDefault() .name("field3").type().booleanType().noDefault() .endRecord(); final CassandraSchemaConverter converter = new CassandraSchemaConverter("testKeyspace", "testTableName", Optional.absent()); final CassandraSchema cassSchema = converter.convertToExternalSchema(record); Assert.assertTrue(cassSchema.getFields().size() == 1); Assert.assertEquals("field3", cassSchema.getFields().get(0).getFieldName()); Assert.assertEquals(CassandraSchemaField.convertFromAvroType( SchemaTestUtil.getSchema(CassandraSchemaField.BOOLEAN_TYPE)), cassSchema.getFields().get(0).getType()); }
Assert.assertEquals("testTableName", converter.getTableName()); final CassandraSchema cassSchema = converter.convertToExternalSchema(record);