diff --git a/batch/file-ingest-sftp-cf/artifacts/ingest-sftp-cf-1.0.0.jar b/batch/file-ingest-sftp-cf/artifacts/ingest-sftp-cf-1.0.0.jar deleted file mode 100644 index adc4119..0000000 Binary files a/batch/file-ingest-sftp-cf/artifacts/ingest-sftp-cf-1.0.0.jar and /dev/null differ diff --git a/batch/file-ingest-sftp-cf/data/people.csv b/batch/file-ingest-sftp-cf/data/people.csv deleted file mode 100644 index 5f3258e..0000000 --- a/batch/file-ingest-sftp-cf/data/people.csv +++ /dev/null @@ -1,3 +0,0 @@ -Jane,Doe -John,Doe -Joe,Doe \ No newline at end of file diff --git a/batch/file-ingest-sftp-cf/pom.xml b/batch/file-ingest-sftp-cf/pom.xml deleted file mode 100644 index 552b6f8..0000000 --- a/batch/file-ingest-sftp-cf/pom.xml +++ /dev/null @@ -1,128 +0,0 @@ - - - 4.0.0 - org.springframework - ingest-sftp-cf - 1.0.0 - - org.springframework.boot - spring-boot-starter-parent - 2.0.1.RELEASE - - - 1.8 - 3.7.0 - 1.2.2.RELEASE - 5.0.4.RELEASE - 2.4 - 1.6.0 - 2.0.2.RELEASE - - - - org.springframework.boot - spring-boot-starter-batch - - - com.h2database - h2 - - - org.springframework.cloud - spring-cloud-task-core - ${spring.cloud.task.version} - - - org.springframework.cloud - spring-cloud-task-batch - ${spring.cloud.task.version} - - - commons-io - commons-io - ${commons.io.version} - - - org.springframework.integration - spring-integration-file - ${spring.integration.version} - - - org.springframework.integration - spring-integration-sftp - ${spring.integration.version} - - - org.apache.sshd - sshd-core - ${sshd.core.version} - test - - - junit - junit - test - - - org.hsqldb - hsqldb - test - - - org.springframework.boot - spring-boot-test - - - org.springframework - spring-test - - - org.springframework.cloud - spring-cloud-cloudfoundry-connector - ${spring.cloud.connector.version} - - - org.springframework.cloud - spring-cloud-spring-service-connector - ${spring.cloud.connector.version} - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven.compiler.plugin.version} - - ${java.version} - ${java.version} - ${java.version} - ${java.version} - -Xlint:all - - - - - - - repository.spring.milestone - Spring Milestone Repository - http://repo.spring.io/milestone - - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - - diff --git a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/Application.java b/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/Application.java deleted file mode 100644 index 1cbaf9d..0000000 --- a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/Application.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.springframework.ingest; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.task.configuration.EnableTask; - -/** - * Main entry point for the ingest sample application. - * - * @author Chris Schaefer - */ -@EnableTask -@SpringBootApplication -public class Application { - public static void main(String[] args) throws Exception { - SpringApplication.run(Application.class, args); - } -} diff --git a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/config/BatchConfiguration.java b/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/config/BatchConfiguration.java deleted file mode 100644 index dffc988..0000000 --- a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/config/BatchConfiguration.java +++ /dev/null @@ -1,137 +0,0 @@ -package org.springframework.ingest.config; - -import java.io.File; - -import javax.sql.DataSource; - -import org.apache.commons.io.FileUtils; - -import org.springframework.batch.core.ExitStatus; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.core.StepExecutionListener; -import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; -import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepScope; -import org.springframework.batch.core.launch.support.RunIdIncrementer; -import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.ItemStreamReader; -import org.springframework.batch.item.ItemWriter; -import org.springframework.batch.item.database.builder.JdbcBatchItemWriterBuilder; -import org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.FileSystemResource; -import org.springframework.core.io.Resource; - -import org.springframework.ingest.domain.Person; -import org.springframework.ingest.mapper.fieldset.PersonFieldSetMapper; -import org.springframework.ingest.processor.PersonItemProcessor; -import org.springframework.ingest.resource.RemoteResource; -import org.springframework.ingest.resource.sftp.SftpRemoteResource; - -/** - * Class used to configure the batch job related beans. - * - * @author Chris Schaefer - */ -@Configuration -@EnableBatchProcessing -@EnableConfigurationProperties(BatchConfigurationProperties.class) -public class BatchConfiguration { - private final DataSource dataSource; - private final JobBuilderFactory jobBuilderFactory; - private final StepBuilderFactory stepBuilderFactory; - private final BatchConfigurationProperties batchConfigurationProperties; - - @Autowired - public BatchConfiguration(final DataSource dataSource, final JobBuilderFactory jobBuilderFactory, - final StepBuilderFactory stepBuilderFactory, - final BatchConfigurationProperties batchConfigurationProperties) { - this.dataSource = dataSource; - this.jobBuilderFactory = jobBuilderFactory; - this.stepBuilderFactory = stepBuilderFactory; - this.batchConfigurationProperties = batchConfigurationProperties; - } - - @Bean - @StepScope - public StepExecutionListener ingestStepExecutionListener(@Value("#{jobParameters['remoteFilePath']}") String remoteFilePath, - @Value("#{jobParameters['localFilePath']}") String localFilePath) { - return new StepExecutionListener() { - @Override - public void beforeStep(StepExecution stepExecution) { - try { - Resource fetchedResource = remoteResource().getResource(remoteFilePath); - FileUtils.copyInputStreamToFile(fetchedResource.getInputStream(), new File(localFilePath)); - } - catch (Exception e) { - throw new RuntimeException("Could not write remote file to local disk", e); - } - } - - @Override - public ExitStatus afterStep(StepExecution stepExecution) { - return null; - } - }; - } - - @Bean - @StepScope - public ItemStreamReader reader(@Value("#{jobParameters['localFilePath']}") String localFilePath) throws Exception { - return new FlatFileItemReaderBuilder() - .name("reader") - .resource(new FileSystemResource(localFilePath)) - .delimited() - .names(new String[] {"firstName", "lastName"}) - .fieldSetMapper(new PersonFieldSetMapper()) - .build(); - } - - @Bean - public ItemProcessor processor() { - return new PersonItemProcessor(); - } - - @Bean - public ItemWriter writer() { - return new JdbcBatchItemWriterBuilder() - .beanMapped() - .dataSource(this.dataSource) - .sql("INSERT INTO people (first_name, last_name) VALUES (:firstName, :lastName)") - .build(); - } - - @Bean - public Job ingestJob() throws Exception { - return jobBuilderFactory.get("ingestJob") - .incrementer(new RunIdIncrementer()) - .flow(step1()) - .end() - .build(); - } - - @Bean - public Step step1() throws Exception { - return stepBuilderFactory.get("ingest") - .chunk(10) - .reader(reader(null)) - .processor(processor()) - .writer(writer()) - .listener(ingestStepExecutionListener(null, null)) - .build(); - } - - @Bean - public RemoteResource remoteResource() { - return new SftpRemoteResource(batchConfigurationProperties.getSftpHost(), batchConfigurationProperties.getSftpPort(), - batchConfigurationProperties.getSftpUsername(), batchConfigurationProperties.getSftpPassword()); - } -} diff --git a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/config/BatchConfigurationProperties.java b/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/config/BatchConfigurationProperties.java deleted file mode 100644 index b5db31f..0000000 --- a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/config/BatchConfigurationProperties.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.springframework.ingest.config; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * Configuration Properties for BatchConfiguration - * - * @author Chris Schaefer - */ -@ConfigurationProperties -public class BatchConfigurationProperties { - private String sftpHost; - private Integer sftpPort; - private String sftpUsername; - private String sftpPassword; - - public String getSftpHost() { - return sftpHost; - } - - public void setSftpHost(String sftpHost) { - this.sftpHost = sftpHost; - } - - public Integer getSftpPort() { - return sftpPort; - } - - public void setSftpPort(Integer sftpPort) { - this.sftpPort = sftpPort; - } - - public String getSftpUsername() { - return sftpUsername; - } - - public void setSftpUsername(String sftpUsername) { - this.sftpUsername = sftpUsername; - } - - public String getSftpPassword() { - return sftpPassword; - } - - public void setSftpPassword(String sftpPassword) { - this.sftpPassword = sftpPassword; - } -} diff --git a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/domain/Person.java b/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/domain/Person.java deleted file mode 100644 index edf03d9..0000000 --- a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/domain/Person.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.springframework.ingest.domain; - -/** - * Domain object representing data about a Person. - * - * @author Chris Schaefer - */ -public class Person { - private final String firstName; - private final String lastName; - - public Person(final String firstName, final String lastName) { - this.firstName = firstName; - this.lastName = lastName; - } - - public String getFirstName() { - return firstName; - } - - public String getLastName() { - return lastName; - } - - @Override - public String toString() { - return "First name: " + firstName + " , last name: " + lastName; - } -} diff --git a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/mapper/fieldset/PersonFieldSetMapper.java b/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/mapper/fieldset/PersonFieldSetMapper.java deleted file mode 100644 index 4b3f6cf..0000000 --- a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/mapper/fieldset/PersonFieldSetMapper.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.springframework.ingest.mapper.fieldset; - -import org.springframework.batch.item.file.mapping.FieldSetMapper; -import org.springframework.batch.item.file.transform.FieldSet; - -import org.springframework.ingest.domain.Person; - -/** - * Maps the provided FieldSet into a Person object. - * - * @author Chris Schaefer - */ -public class PersonFieldSetMapper implements FieldSetMapper { - @Override - public Person mapFieldSet(FieldSet fieldSet) { - String firstName = fieldSet.readString(0); - String lastName = fieldSet.readString(1); - - return new Person(firstName, lastName); - } -} diff --git a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/processor/PersonItemProcessor.java b/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/processor/PersonItemProcessor.java deleted file mode 100644 index 6d2802c..0000000 --- a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/processor/PersonItemProcessor.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.springframework.ingest.processor; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.batch.item.ItemProcessor; -import org.springframework.ingest.domain.Person; - -/** - * Processes the providing record, transforming the data into - * uppercase characters. - * - * @author Chris Schaefer - */ -public class PersonItemProcessor implements ItemProcessor { - private static final Logger LOGGER = LoggerFactory.getLogger(PersonItemProcessor.class); - - @Override - public Person process(Person person) throws Exception { - String firstName = person.getFirstName().toUpperCase(); - String lastName = person.getLastName().toUpperCase(); - - Person processedPerson = new Person(firstName, lastName); - - LOGGER.info("Processed: " + person + " into: " + processedPerson); - - return processedPerson; - } -} diff --git a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/resource/RemoteResource.java b/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/resource/RemoteResource.java deleted file mode 100644 index 01da55e..0000000 --- a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/resource/RemoteResource.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.springframework.ingest.resource; - -import org.springframework.core.io.Resource; - -/** - * Interface definition for remote Resource implementations. - * - * @author Chris Schaefer - */ -public interface RemoteResource { - Resource getResource(String resourceLocation); -} diff --git a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/resource/sftp/SftpRemoteResource.java b/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/resource/sftp/SftpRemoteResource.java deleted file mode 100644 index 2fea44b..0000000 --- a/batch/file-ingest-sftp-cf/src/main/java/org/springframework/ingest/resource/sftp/SftpRemoteResource.java +++ /dev/null @@ -1,81 +0,0 @@ -package org.springframework.ingest.resource.sftp; - -import java.io.InputStream; - -import org.apache.commons.io.IOUtils; - -import org.springframework.core.io.ByteArrayResource; -import org.springframework.core.io.Resource; -import org.springframework.ingest.resource.RemoteResource; -import org.springframework.integration.file.remote.InputStreamCallback; -import org.springframework.integration.file.remote.RemoteFileOperations; -import org.springframework.integration.sftp.session.DefaultSftpSessionFactory; -import org.springframework.integration.sftp.session.SftpRemoteFileTemplate; -import org.springframework.util.Assert; - -/** - * RemoteResource implementation utilizing a Spring Integration SftpRemoteFileTemplate - * to connect and return a file as a Spring Resource. - * - * @author Chris Schaefer - */ -public class SftpRemoteResource implements RemoteResource { - private static final Integer DEFAULT_SFTP_PORT = 22; - private static final String LOCALHOST = "127.0.0.1"; - - private final String host; - private final Integer port; - private final String username; - private final String password; - - public SftpRemoteResource(String host, Integer port, String username, String password) { - Assert.hasText(username, "Username must be defined"); - Assert.hasText(password, "Password must be defined"); - - this.host = host; - this.port = port; - this.username = username; - this.password = password; - } - - @Override - public Resource getResource(String resourceLocation) { - DefaultSftpSessionFactory sessionFactory = getSessionFactory(); - RemoteFileOperations remoteFileOperations = new SftpRemoteFileTemplate(sessionFactory); - - FileFetcher filefetcher = new FileFetcher(); - remoteFileOperations.get(resourceLocation, filefetcher); - - return new ByteArrayResource(filefetcher.getBytes()); - } - - private DefaultSftpSessionFactory getSessionFactory() { - DefaultSftpSessionFactory sessionFactory = new DefaultSftpSessionFactory(); - sessionFactory.setHost(host != null ? host : LOCALHOST); - sessionFactory.setPort(port != null ? port : DEFAULT_SFTP_PORT); - sessionFactory.setUser(username); - sessionFactory.setPassword(password); - sessionFactory.setAllowUnknownKeys(true); - - return sessionFactory; - } - - - private static class FileFetcher implements InputStreamCallback { - private byte[] bytes; - - @Override - public void doWithInputStream(InputStream inputStream) { - try { - bytes = IOUtils.toByteArray(inputStream); - } - catch (Exception e) { - throw new RuntimeException("Failed to convert InputStream to byte array", e); - } - } - - public byte[] getBytes() { - return bytes; - } - } -} diff --git a/batch/file-ingest-sftp-cf/src/main/resources/application.properties b/batch/file-ingest-sftp-cf/src/main/resources/application.properties deleted file mode 100644 index df2d585..0000000 --- a/batch/file-ingest-sftp-cf/src/main/resources/application.properties +++ /dev/null @@ -1,2 +0,0 @@ -spring.application.name=fileIngestSftp -spring.datasource.initialization-mode=always diff --git a/batch/file-ingest-sftp-cf/src/main/resources/schema-all.sql b/batch/file-ingest-sftp-cf/src/main/resources/schema-all.sql deleted file mode 100644 index 870871d..0000000 --- a/batch/file-ingest-sftp-cf/src/main/resources/schema-all.sql +++ /dev/null @@ -1,6 +0,0 @@ -CREATE TABLE IF NOT EXISTS people ( - person_id MEDIUMINT NOT NULL AUTO_INCREMENT, - first_name VARCHAR(20), - last_name VARCHAR(20), - PRIMARY KEY (person_id) -); diff --git a/batch/file-ingest-sftp-cf/src/test/java/org/springframework/ingest/config/BatchConfigurationTests.java b/batch/file-ingest-sftp-cf/src/test/java/org/springframework/ingest/config/BatchConfigurationTests.java deleted file mode 100644 index 8a02f43..0000000 --- a/batch/file-ingest-sftp-cf/src/test/java/org/springframework/ingest/config/BatchConfigurationTests.java +++ /dev/null @@ -1,202 +0,0 @@ -package org.springframework.ingest.config; - -import org.junit.runner.RunWith; -import org.springframework.batch.core.BatchStatus; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.JobParameters; -import org.springframework.batch.core.JobParametersBuilder; -import org.springframework.batch.core.Step; -import org.springframework.batch.core.launch.JobLauncher; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.core.env.MapPropertySource; -import org.springframework.core.env.StandardEnvironment; -import org.springframework.core.io.ResourceLoader; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory; -import org.springframework.jdbc.datasource.init.DatabasePopulatorUtils; -import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.util.ClassUtils; - -import org.apache.commons.io.FileUtils; - -import org.apache.sshd.common.NamedFactory; -import org.apache.sshd.common.file.virtualfs.VirtualFileSystemFactory; -import org.apache.sshd.server.Command; -import org.apache.sshd.server.SshServer; -import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider; -import org.apache.sshd.server.subsystem.sftp.SftpSubsystemFactory; - -import java.io.File; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.HashMap; - -import javax.annotation.PostConstruct; -import javax.sql.DataSource; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.ClassRule; -import org.junit.rules.TemporaryFolder; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -/** - * BatchConfiguration test cases - * - * @author Chris Schaefer - */ -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) -@DirtiesContext -@EnableConfigurationProperties(BatchConfigurationProperties.class) -public class BatchConfigurationTests { - private static int port; - private static SshServer server; - private static AnnotationConfigApplicationContext context; - - private static final String SFTP_USER = "user"; - private static final String SFTP_PASS = "pass"; - private static final String SFTP_HOST = "127.0.0.1"; - private static final String REMOTE_FILE = "people.csv"; - private static final String HOST_KEY_FILE = "hostkey.ser"; - - @ClassRule - public static final TemporaryFolder remoteTemporaryFolder = new TemporaryFolder(); - - @BeforeClass - public static void createServer() throws Exception { - File createdFile = remoteTemporaryFolder.newFile(REMOTE_FILE); - FileUtils.writeStringToFile(createdFile, "Jill,Doe\nJoe,Doe\nJustin,Doe\nJane,Doe\nJohn,Doe"); - - server = SshServer.setUpDefaultServer(); - server.setPasswordAuthenticator((username, password, session) -> true); - server.setPort(0); - server.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(new File(HOST_KEY_FILE))); - server.setSubsystemFactories(Collections.>singletonList(new SftpSubsystemFactory())); - server.setFileSystemFactory(new VirtualFileSystemFactory(remoteTemporaryFolder.getRoot().toPath())); - server.start(); - - port = server.getPort(); - } - - @AfterClass - public static void stopServer() throws Exception { - server.stop(); - - File hostkey = new File(HOST_KEY_FILE); - - if (hostkey.exists()) { - hostkey.delete(); - } - } - - @Before - public void createContext() { - Map properties = new HashMap(); - properties.put("sftp_host", SFTP_HOST); - properties.put("sftp_port", port); - properties.put("sftp_username", SFTP_USER); - properties.put("sftp_password", SFTP_PASS); - - ConfigurableEnvironment environment = new StandardEnvironment(); - environment.getPropertySources().addFirst(new MapPropertySource("sftpProperties", properties)); - - context = new AnnotationConfigApplicationContext(); - context.register(BatchConfiguration.class, DataSourceConfiguration.class); - context.setEnvironment(environment); - context.refresh(); - } - - @After - public void closeContext() { - context.close(); - } - - @Test - public void testBatchConfigurationSuccess() throws Exception { - JobExecution jobExecution = testJob(REMOTE_FILE); - - assertEquals("Incorrect batch status", BatchStatus.COMPLETED, jobExecution.getStatus()); - assertEquals("Invalid number of step executions", 1, jobExecution.getStepExecutions().size()); - } - - @Test - public void testBatchConfigurationFail() throws Exception { - JobExecution jobExecution = testJob("missing-people-file.csv"); - - assertEquals("Incorrect batch status", BatchStatus.FAILED, jobExecution.getStatus()); - } - - @Test - public void testBatchDataProcessing() throws Exception { - JobExecution jobExecution = testJob(REMOTE_FILE); - - assertEquals("Incorrect batch status", BatchStatus.COMPLETED, jobExecution.getStatus()); - assertEquals("Invalid number of step executions", 1, jobExecution.getStepExecutions().size()); - - JdbcTemplate jdbcTemplate = new JdbcTemplate(context.getBean(DataSource.class)); - List> peopleList = jdbcTemplate.queryForList("select first_name, last_name from people"); - - assertEquals("Incorrect number of results", 5, peopleList.size()); - - for(Map person : peopleList) { - assertNotNull("Received null person", person); - - String firstName = (String) person.get("first_name"); - assertEquals("Invalid first name: " + firstName, firstName.toUpperCase(), firstName); - - String lastName = (String) person.get("last_name"); - assertEquals("Invalid last name: " + lastName, lastName.toUpperCase(), lastName); - } - } - - private JobExecution testJob(String filePath) throws Exception { - Job job = context.getBean(Job.class); - JobLauncher jobLauncher = context.getBean(JobLauncher.class); - - File localFile = File.createTempFile("local", ".csv"); - localFile.deleteOnExit(); - - JobParameters jobParameters = new JobParametersBuilder() - .addString("localFilePath", localFile.getAbsolutePath()) - .addString("remoteFilePath", filePath) - .toJobParameters(); - - return jobLauncher.run(job, jobParameters); - } - - @Configuration - public static class DataSourceConfiguration { - @Autowired - private ResourceLoader resourceLoader; - - @PostConstruct - protected void initialize() { - ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); - populator.addScript(resourceLoader.getResource(ClassUtils.addResourcePathToPackagePath(Step.class, "schema-hsqldb.sql"))); - populator.addScript(resourceLoader.getResource("classpath:schema-all.sql")); - populator.setContinueOnError(true); - DatabasePopulatorUtils.execute(populator, dataSource()); - } - - @Bean - public DataSource dataSource() { - return new EmbeddedDatabaseFactory().getDatabase(); - } - } -} diff --git a/batch/file-ingest-sftp-cf/src/test/java/org/springframework/ingest/mapper/fieldset/PersonFieldSetMapperTests.java b/batch/file-ingest-sftp-cf/src/test/java/org/springframework/ingest/mapper/fieldset/PersonFieldSetMapperTests.java deleted file mode 100644 index 4256de3..0000000 --- a/batch/file-ingest-sftp-cf/src/test/java/org/springframework/ingest/mapper/fieldset/PersonFieldSetMapperTests.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.springframework.ingest.mapper.fieldset; - -import org.junit.Test; - -import org.springframework.batch.item.file.mapping.FieldSetMapper; -import org.springframework.batch.item.file.transform.DefaultFieldSet; -import org.springframework.batch.item.file.transform.FieldSet; - -import org.springframework.ingest.domain.Person; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertEquals; - -/** - * Test cases for PersonFieldSetMapper. - * - * @author Chris Schaefer - */ -public class PersonFieldSetMapperTests { - private static final String[] TOKENS = new String[] { "jane", "doe" }; - private static final String[] NAMES = new String[] { "firstName", "lastName" }; - - @Test - public void testPersonFieldMapping() throws Exception { - FieldSet fieldSet = new DefaultFieldSet(TOKENS, NAMES); - - FieldSetMapper fieldSetMapper = new PersonFieldSetMapper(); - Person person = fieldSetMapper.mapFieldSet(fieldSet); - - assertNotNull("Received null Person", person); - assertNotNull("Received null first name", person.getFirstName()); - assertNotNull("Received null last name", person.getLastName()); - assertEquals("Received wrong first name", TOKENS[0], person.getFirstName()); - assertEquals("Received wrong last name", TOKENS[1], person.getLastName()); - } -} diff --git a/batch/file-ingest-sftp-cf/src/test/java/org/springframework/ingest/processor/PersonItemProcessorTests.java b/batch/file-ingest-sftp-cf/src/test/java/org/springframework/ingest/processor/PersonItemProcessorTests.java deleted file mode 100644 index 1477f58..0000000 --- a/batch/file-ingest-sftp-cf/src/test/java/org/springframework/ingest/processor/PersonItemProcessorTests.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.springframework.ingest.processor; - -import org.junit.Test; - -import org.springframework.batch.item.ItemProcessor; -import org.springframework.ingest.domain.Person; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertEquals; - -/** - * Test cases for PersonItemProcessor. - * - * @author Chris Schaefer - */ -public class PersonItemProcessorTests { - private static final String FIRST_NAME = "jane"; - private static final String LAST_NAME = "doe"; - - @Test - public void testPersonProcessing() throws Exception { - Person person = new Person(FIRST_NAME, LAST_NAME); - - ItemProcessor personItemProcessor = new PersonItemProcessor(); - Person transformedPerson = personItemProcessor.process(person); - - assertNotNull("Received null Person", transformedPerson); - assertNotNull("Received null first name", transformedPerson.getFirstName()); - assertNotNull("Received null last name", transformedPerson.getLastName()); - assertEquals("Invalid first name processing, should be uppercase", - person.getFirstName().toUpperCase(), transformedPerson.getFirstName()); - assertEquals("Invalid last name processing, should be uppercase", - person.getLastName().toUpperCase(), transformedPerson.getLastName()); - } -} diff --git a/batch/file-ingest-sftp-cf/src/test/resources/schema-all.sql b/batch/file-ingest-sftp-cf/src/test/resources/schema-all.sql deleted file mode 100644 index 4e798d0..0000000 --- a/batch/file-ingest-sftp-cf/src/test/resources/schema-all.sql +++ /dev/null @@ -1,5 +0,0 @@ -CREATE TABLE IF NOT EXISTS people ( - person_id BIGINT IDENTITY NOT NULL PRIMARY KEY, - first_name VARCHAR(20), - last_name VARCHAR(20) -); diff --git a/batch/file-ingest-sftp/data/people.csv b/batch/file-ingest-sftp/data/people.csv deleted file mode 100644 index 5f3258e..0000000 --- a/batch/file-ingest-sftp/data/people.csv +++ /dev/null @@ -1,3 +0,0 @@ -Jane,Doe -John,Doe -Joe,Doe \ No newline at end of file diff --git a/batch/file-ingest-sftp/pom.xml b/batch/file-ingest-sftp/pom.xml deleted file mode 100644 index af47cb9..0000000 --- a/batch/file-ingest-sftp/pom.xml +++ /dev/null @@ -1,117 +0,0 @@ - - - 4.0.0 - org.springframework - ingest-sftp - 1.0.0 - - org.springframework.boot - spring-boot-starter-parent - 2.0.1.RELEASE - - - 1.8 - 3.7.0 - 1.2.2.RELEASE - 5.0.4.RELEASE - 2.4 - 1.6.0 - - - - org.springframework.boot - spring-boot-starter-batch - - - com.h2database - h2 - - - org.springframework.cloud - spring-cloud-task-core - ${spring.cloud.task.version} - - - org.springframework.cloud - spring-cloud-task-batch - ${spring.cloud.task.version} - - - commons-io - commons-io - ${commons.io.version} - - - org.springframework.integration - spring-integration-file - ${spring.integration.version} - - - org.springframework.integration - spring-integration-sftp - ${spring.integration.version} - - - org.apache.sshd - sshd-core - ${sshd.core.version} - test - - - junit - junit - test - - - org.hsqldb - hsqldb - test - - - org.springframework.boot - spring-boot-test - - - org.springframework - spring-test - - - - - - org.springframework.boot - spring-boot-maven-plugin - - - org.apache.maven.plugins - maven-compiler-plugin - ${maven.compiler.plugin.version} - - ${java.version} - ${java.version} - ${java.version} - ${java.version} - -Xlint:all - - - - - - - repository.spring.milestone - Spring Milestone Repository - http://repo.spring.io/milestone - - - - - spring-milestones - Spring Milestones - https://repo.spring.io/milestone - - false - - - - diff --git a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/Application.java b/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/Application.java deleted file mode 100644 index 1cbaf9d..0000000 --- a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/Application.java +++ /dev/null @@ -1,18 +0,0 @@ -package org.springframework.ingest; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.task.configuration.EnableTask; - -/** - * Main entry point for the ingest sample application. - * - * @author Chris Schaefer - */ -@EnableTask -@SpringBootApplication -public class Application { - public static void main(String[] args) throws Exception { - SpringApplication.run(Application.class, args); - } -} diff --git a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/config/BatchConfiguration.java b/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/config/BatchConfiguration.java deleted file mode 100644 index dffc988..0000000 --- a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/config/BatchConfiguration.java +++ /dev/null @@ -1,137 +0,0 @@ -package org.springframework.ingest.config; - -import java.io.File; - -import javax.sql.DataSource; - -import org.apache.commons.io.FileUtils; - -import org.springframework.batch.core.ExitStatus; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.Step; -import org.springframework.batch.core.StepExecution; -import org.springframework.batch.core.StepExecutionListener; -import org.springframework.batch.core.configuration.annotation.EnableBatchProcessing; -import org.springframework.batch.core.configuration.annotation.JobBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepBuilderFactory; -import org.springframework.batch.core.configuration.annotation.StepScope; -import org.springframework.batch.core.launch.support.RunIdIncrementer; -import org.springframework.batch.item.ItemProcessor; -import org.springframework.batch.item.ItemStreamReader; -import org.springframework.batch.item.ItemWriter; -import org.springframework.batch.item.database.builder.JdbcBatchItemWriterBuilder; -import org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.FileSystemResource; -import org.springframework.core.io.Resource; - -import org.springframework.ingest.domain.Person; -import org.springframework.ingest.mapper.fieldset.PersonFieldSetMapper; -import org.springframework.ingest.processor.PersonItemProcessor; -import org.springframework.ingest.resource.RemoteResource; -import org.springframework.ingest.resource.sftp.SftpRemoteResource; - -/** - * Class used to configure the batch job related beans. - * - * @author Chris Schaefer - */ -@Configuration -@EnableBatchProcessing -@EnableConfigurationProperties(BatchConfigurationProperties.class) -public class BatchConfiguration { - private final DataSource dataSource; - private final JobBuilderFactory jobBuilderFactory; - private final StepBuilderFactory stepBuilderFactory; - private final BatchConfigurationProperties batchConfigurationProperties; - - @Autowired - public BatchConfiguration(final DataSource dataSource, final JobBuilderFactory jobBuilderFactory, - final StepBuilderFactory stepBuilderFactory, - final BatchConfigurationProperties batchConfigurationProperties) { - this.dataSource = dataSource; - this.jobBuilderFactory = jobBuilderFactory; - this.stepBuilderFactory = stepBuilderFactory; - this.batchConfigurationProperties = batchConfigurationProperties; - } - - @Bean - @StepScope - public StepExecutionListener ingestStepExecutionListener(@Value("#{jobParameters['remoteFilePath']}") String remoteFilePath, - @Value("#{jobParameters['localFilePath']}") String localFilePath) { - return new StepExecutionListener() { - @Override - public void beforeStep(StepExecution stepExecution) { - try { - Resource fetchedResource = remoteResource().getResource(remoteFilePath); - FileUtils.copyInputStreamToFile(fetchedResource.getInputStream(), new File(localFilePath)); - } - catch (Exception e) { - throw new RuntimeException("Could not write remote file to local disk", e); - } - } - - @Override - public ExitStatus afterStep(StepExecution stepExecution) { - return null; - } - }; - } - - @Bean - @StepScope - public ItemStreamReader reader(@Value("#{jobParameters['localFilePath']}") String localFilePath) throws Exception { - return new FlatFileItemReaderBuilder() - .name("reader") - .resource(new FileSystemResource(localFilePath)) - .delimited() - .names(new String[] {"firstName", "lastName"}) - .fieldSetMapper(new PersonFieldSetMapper()) - .build(); - } - - @Bean - public ItemProcessor processor() { - return new PersonItemProcessor(); - } - - @Bean - public ItemWriter writer() { - return new JdbcBatchItemWriterBuilder() - .beanMapped() - .dataSource(this.dataSource) - .sql("INSERT INTO people (first_name, last_name) VALUES (:firstName, :lastName)") - .build(); - } - - @Bean - public Job ingestJob() throws Exception { - return jobBuilderFactory.get("ingestJob") - .incrementer(new RunIdIncrementer()) - .flow(step1()) - .end() - .build(); - } - - @Bean - public Step step1() throws Exception { - return stepBuilderFactory.get("ingest") - .chunk(10) - .reader(reader(null)) - .processor(processor()) - .writer(writer()) - .listener(ingestStepExecutionListener(null, null)) - .build(); - } - - @Bean - public RemoteResource remoteResource() { - return new SftpRemoteResource(batchConfigurationProperties.getSftpHost(), batchConfigurationProperties.getSftpPort(), - batchConfigurationProperties.getSftpUsername(), batchConfigurationProperties.getSftpPassword()); - } -} diff --git a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/config/BatchConfigurationProperties.java b/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/config/BatchConfigurationProperties.java deleted file mode 100644 index b5db31f..0000000 --- a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/config/BatchConfigurationProperties.java +++ /dev/null @@ -1,48 +0,0 @@ -package org.springframework.ingest.config; - -import org.springframework.boot.context.properties.ConfigurationProperties; - -/** - * Configuration Properties for BatchConfiguration - * - * @author Chris Schaefer - */ -@ConfigurationProperties -public class BatchConfigurationProperties { - private String sftpHost; - private Integer sftpPort; - private String sftpUsername; - private String sftpPassword; - - public String getSftpHost() { - return sftpHost; - } - - public void setSftpHost(String sftpHost) { - this.sftpHost = sftpHost; - } - - public Integer getSftpPort() { - return sftpPort; - } - - public void setSftpPort(Integer sftpPort) { - this.sftpPort = sftpPort; - } - - public String getSftpUsername() { - return sftpUsername; - } - - public void setSftpUsername(String sftpUsername) { - this.sftpUsername = sftpUsername; - } - - public String getSftpPassword() { - return sftpPassword; - } - - public void setSftpPassword(String sftpPassword) { - this.sftpPassword = sftpPassword; - } -} diff --git a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/domain/Person.java b/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/domain/Person.java deleted file mode 100644 index edf03d9..0000000 --- a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/domain/Person.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.springframework.ingest.domain; - -/** - * Domain object representing data about a Person. - * - * @author Chris Schaefer - */ -public class Person { - private final String firstName; - private final String lastName; - - public Person(final String firstName, final String lastName) { - this.firstName = firstName; - this.lastName = lastName; - } - - public String getFirstName() { - return firstName; - } - - public String getLastName() { - return lastName; - } - - @Override - public String toString() { - return "First name: " + firstName + " , last name: " + lastName; - } -} diff --git a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/mapper/fieldset/PersonFieldSetMapper.java b/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/mapper/fieldset/PersonFieldSetMapper.java deleted file mode 100644 index 4b3f6cf..0000000 --- a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/mapper/fieldset/PersonFieldSetMapper.java +++ /dev/null @@ -1,21 +0,0 @@ -package org.springframework.ingest.mapper.fieldset; - -import org.springframework.batch.item.file.mapping.FieldSetMapper; -import org.springframework.batch.item.file.transform.FieldSet; - -import org.springframework.ingest.domain.Person; - -/** - * Maps the provided FieldSet into a Person object. - * - * @author Chris Schaefer - */ -public class PersonFieldSetMapper implements FieldSetMapper { - @Override - public Person mapFieldSet(FieldSet fieldSet) { - String firstName = fieldSet.readString(0); - String lastName = fieldSet.readString(1); - - return new Person(firstName, lastName); - } -} diff --git a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/processor/PersonItemProcessor.java b/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/processor/PersonItemProcessor.java deleted file mode 100644 index 6d2802c..0000000 --- a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/processor/PersonItemProcessor.java +++ /dev/null @@ -1,29 +0,0 @@ -package org.springframework.ingest.processor; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.springframework.batch.item.ItemProcessor; -import org.springframework.ingest.domain.Person; - -/** - * Processes the providing record, transforming the data into - * uppercase characters. - * - * @author Chris Schaefer - */ -public class PersonItemProcessor implements ItemProcessor { - private static final Logger LOGGER = LoggerFactory.getLogger(PersonItemProcessor.class); - - @Override - public Person process(Person person) throws Exception { - String firstName = person.getFirstName().toUpperCase(); - String lastName = person.getLastName().toUpperCase(); - - Person processedPerson = new Person(firstName, lastName); - - LOGGER.info("Processed: " + person + " into: " + processedPerson); - - return processedPerson; - } -} diff --git a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/resource/RemoteResource.java b/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/resource/RemoteResource.java deleted file mode 100644 index 01da55e..0000000 --- a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/resource/RemoteResource.java +++ /dev/null @@ -1,12 +0,0 @@ -package org.springframework.ingest.resource; - -import org.springframework.core.io.Resource; - -/** - * Interface definition for remote Resource implementations. - * - * @author Chris Schaefer - */ -public interface RemoteResource { - Resource getResource(String resourceLocation); -} diff --git a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/resource/sftp/SftpRemoteResource.java b/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/resource/sftp/SftpRemoteResource.java deleted file mode 100644 index 2fea44b..0000000 --- a/batch/file-ingest-sftp/src/main/java/org/springframework/ingest/resource/sftp/SftpRemoteResource.java +++ /dev/null @@ -1,81 +0,0 @@ -package org.springframework.ingest.resource.sftp; - -import java.io.InputStream; - -import org.apache.commons.io.IOUtils; - -import org.springframework.core.io.ByteArrayResource; -import org.springframework.core.io.Resource; -import org.springframework.ingest.resource.RemoteResource; -import org.springframework.integration.file.remote.InputStreamCallback; -import org.springframework.integration.file.remote.RemoteFileOperations; -import org.springframework.integration.sftp.session.DefaultSftpSessionFactory; -import org.springframework.integration.sftp.session.SftpRemoteFileTemplate; -import org.springframework.util.Assert; - -/** - * RemoteResource implementation utilizing a Spring Integration SftpRemoteFileTemplate - * to connect and return a file as a Spring Resource. - * - * @author Chris Schaefer - */ -public class SftpRemoteResource implements RemoteResource { - private static final Integer DEFAULT_SFTP_PORT = 22; - private static final String LOCALHOST = "127.0.0.1"; - - private final String host; - private final Integer port; - private final String username; - private final String password; - - public SftpRemoteResource(String host, Integer port, String username, String password) { - Assert.hasText(username, "Username must be defined"); - Assert.hasText(password, "Password must be defined"); - - this.host = host; - this.port = port; - this.username = username; - this.password = password; - } - - @Override - public Resource getResource(String resourceLocation) { - DefaultSftpSessionFactory sessionFactory = getSessionFactory(); - RemoteFileOperations remoteFileOperations = new SftpRemoteFileTemplate(sessionFactory); - - FileFetcher filefetcher = new FileFetcher(); - remoteFileOperations.get(resourceLocation, filefetcher); - - return new ByteArrayResource(filefetcher.getBytes()); - } - - private DefaultSftpSessionFactory getSessionFactory() { - DefaultSftpSessionFactory sessionFactory = new DefaultSftpSessionFactory(); - sessionFactory.setHost(host != null ? host : LOCALHOST); - sessionFactory.setPort(port != null ? port : DEFAULT_SFTP_PORT); - sessionFactory.setUser(username); - sessionFactory.setPassword(password); - sessionFactory.setAllowUnknownKeys(true); - - return sessionFactory; - } - - - private static class FileFetcher implements InputStreamCallback { - private byte[] bytes; - - @Override - public void doWithInputStream(InputStream inputStream) { - try { - bytes = IOUtils.toByteArray(inputStream); - } - catch (Exception e) { - throw new RuntimeException("Failed to convert InputStream to byte array", e); - } - } - - public byte[] getBytes() { - return bytes; - } - } -} diff --git a/batch/file-ingest-sftp/src/main/resources/application.properties b/batch/file-ingest-sftp/src/main/resources/application.properties deleted file mode 100644 index 6986449..0000000 --- a/batch/file-ingest-sftp/src/main/resources/application.properties +++ /dev/null @@ -1 +0,0 @@ -spring.application.name=fileIngestSftp diff --git a/batch/file-ingest-sftp/src/main/resources/schema-all.sql b/batch/file-ingest-sftp/src/main/resources/schema-all.sql deleted file mode 100644 index 4e798d0..0000000 --- a/batch/file-ingest-sftp/src/main/resources/schema-all.sql +++ /dev/null @@ -1,5 +0,0 @@ -CREATE TABLE IF NOT EXISTS people ( - person_id BIGINT IDENTITY NOT NULL PRIMARY KEY, - first_name VARCHAR(20), - last_name VARCHAR(20) -); diff --git a/batch/file-ingest-sftp/src/test/java/org/springframework/ingest/config/BatchConfigurationTests.java b/batch/file-ingest-sftp/src/test/java/org/springframework/ingest/config/BatchConfigurationTests.java deleted file mode 100644 index 8a02f43..0000000 --- a/batch/file-ingest-sftp/src/test/java/org/springframework/ingest/config/BatchConfigurationTests.java +++ /dev/null @@ -1,202 +0,0 @@ -package org.springframework.ingest.config; - -import org.junit.runner.RunWith; -import org.springframework.batch.core.BatchStatus; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.JobParameters; -import org.springframework.batch.core.JobParametersBuilder; -import org.springframework.batch.core.Step; -import org.springframework.batch.core.launch.JobLauncher; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.env.ConfigurableEnvironment; -import org.springframework.core.env.MapPropertySource; -import org.springframework.core.env.StandardEnvironment; -import org.springframework.core.io.ResourceLoader; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory; -import org.springframework.jdbc.datasource.init.DatabasePopulatorUtils; -import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; -import org.springframework.test.annotation.DirtiesContext; -import org.springframework.test.context.junit4.SpringRunner; -import org.springframework.util.ClassUtils; - -import org.apache.commons.io.FileUtils; - -import org.apache.sshd.common.NamedFactory; -import org.apache.sshd.common.file.virtualfs.VirtualFileSystemFactory; -import org.apache.sshd.server.Command; -import org.apache.sshd.server.SshServer; -import org.apache.sshd.server.keyprovider.SimpleGeneratorHostKeyProvider; -import org.apache.sshd.server.subsystem.sftp.SftpSubsystemFactory; - -import java.io.File; -import java.util.Collections; -import java.util.List; -import java.util.Map; -import java.util.HashMap; - -import javax.annotation.PostConstruct; -import javax.sql.DataSource; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; -import org.junit.AfterClass; -import org.junit.BeforeClass; -import org.junit.ClassRule; -import org.junit.rules.TemporaryFolder; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -/** - * BatchConfiguration test cases - * - * @author Chris Schaefer - */ -@RunWith(SpringRunner.class) -@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE) -@DirtiesContext -@EnableConfigurationProperties(BatchConfigurationProperties.class) -public class BatchConfigurationTests { - private static int port; - private static SshServer server; - private static AnnotationConfigApplicationContext context; - - private static final String SFTP_USER = "user"; - private static final String SFTP_PASS = "pass"; - private static final String SFTP_HOST = "127.0.0.1"; - private static final String REMOTE_FILE = "people.csv"; - private static final String HOST_KEY_FILE = "hostkey.ser"; - - @ClassRule - public static final TemporaryFolder remoteTemporaryFolder = new TemporaryFolder(); - - @BeforeClass - public static void createServer() throws Exception { - File createdFile = remoteTemporaryFolder.newFile(REMOTE_FILE); - FileUtils.writeStringToFile(createdFile, "Jill,Doe\nJoe,Doe\nJustin,Doe\nJane,Doe\nJohn,Doe"); - - server = SshServer.setUpDefaultServer(); - server.setPasswordAuthenticator((username, password, session) -> true); - server.setPort(0); - server.setKeyPairProvider(new SimpleGeneratorHostKeyProvider(new File(HOST_KEY_FILE))); - server.setSubsystemFactories(Collections.>singletonList(new SftpSubsystemFactory())); - server.setFileSystemFactory(new VirtualFileSystemFactory(remoteTemporaryFolder.getRoot().toPath())); - server.start(); - - port = server.getPort(); - } - - @AfterClass - public static void stopServer() throws Exception { - server.stop(); - - File hostkey = new File(HOST_KEY_FILE); - - if (hostkey.exists()) { - hostkey.delete(); - } - } - - @Before - public void createContext() { - Map properties = new HashMap(); - properties.put("sftp_host", SFTP_HOST); - properties.put("sftp_port", port); - properties.put("sftp_username", SFTP_USER); - properties.put("sftp_password", SFTP_PASS); - - ConfigurableEnvironment environment = new StandardEnvironment(); - environment.getPropertySources().addFirst(new MapPropertySource("sftpProperties", properties)); - - context = new AnnotationConfigApplicationContext(); - context.register(BatchConfiguration.class, DataSourceConfiguration.class); - context.setEnvironment(environment); - context.refresh(); - } - - @After - public void closeContext() { - context.close(); - } - - @Test - public void testBatchConfigurationSuccess() throws Exception { - JobExecution jobExecution = testJob(REMOTE_FILE); - - assertEquals("Incorrect batch status", BatchStatus.COMPLETED, jobExecution.getStatus()); - assertEquals("Invalid number of step executions", 1, jobExecution.getStepExecutions().size()); - } - - @Test - public void testBatchConfigurationFail() throws Exception { - JobExecution jobExecution = testJob("missing-people-file.csv"); - - assertEquals("Incorrect batch status", BatchStatus.FAILED, jobExecution.getStatus()); - } - - @Test - public void testBatchDataProcessing() throws Exception { - JobExecution jobExecution = testJob(REMOTE_FILE); - - assertEquals("Incorrect batch status", BatchStatus.COMPLETED, jobExecution.getStatus()); - assertEquals("Invalid number of step executions", 1, jobExecution.getStepExecutions().size()); - - JdbcTemplate jdbcTemplate = new JdbcTemplate(context.getBean(DataSource.class)); - List> peopleList = jdbcTemplate.queryForList("select first_name, last_name from people"); - - assertEquals("Incorrect number of results", 5, peopleList.size()); - - for(Map person : peopleList) { - assertNotNull("Received null person", person); - - String firstName = (String) person.get("first_name"); - assertEquals("Invalid first name: " + firstName, firstName.toUpperCase(), firstName); - - String lastName = (String) person.get("last_name"); - assertEquals("Invalid last name: " + lastName, lastName.toUpperCase(), lastName); - } - } - - private JobExecution testJob(String filePath) throws Exception { - Job job = context.getBean(Job.class); - JobLauncher jobLauncher = context.getBean(JobLauncher.class); - - File localFile = File.createTempFile("local", ".csv"); - localFile.deleteOnExit(); - - JobParameters jobParameters = new JobParametersBuilder() - .addString("localFilePath", localFile.getAbsolutePath()) - .addString("remoteFilePath", filePath) - .toJobParameters(); - - return jobLauncher.run(job, jobParameters); - } - - @Configuration - public static class DataSourceConfiguration { - @Autowired - private ResourceLoader resourceLoader; - - @PostConstruct - protected void initialize() { - ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); - populator.addScript(resourceLoader.getResource(ClassUtils.addResourcePathToPackagePath(Step.class, "schema-hsqldb.sql"))); - populator.addScript(resourceLoader.getResource("classpath:schema-all.sql")); - populator.setContinueOnError(true); - DatabasePopulatorUtils.execute(populator, dataSource()); - } - - @Bean - public DataSource dataSource() { - return new EmbeddedDatabaseFactory().getDatabase(); - } - } -} diff --git a/batch/file-ingest-sftp/src/test/java/org/springframework/ingest/mapper/fieldset/PersonFieldSetMapperTests.java b/batch/file-ingest-sftp/src/test/java/org/springframework/ingest/mapper/fieldset/PersonFieldSetMapperTests.java deleted file mode 100644 index 4256de3..0000000 --- a/batch/file-ingest-sftp/src/test/java/org/springframework/ingest/mapper/fieldset/PersonFieldSetMapperTests.java +++ /dev/null @@ -1,36 +0,0 @@ -package org.springframework.ingest.mapper.fieldset; - -import org.junit.Test; - -import org.springframework.batch.item.file.mapping.FieldSetMapper; -import org.springframework.batch.item.file.transform.DefaultFieldSet; -import org.springframework.batch.item.file.transform.FieldSet; - -import org.springframework.ingest.domain.Person; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertEquals; - -/** - * Test cases for PersonFieldSetMapper. - * - * @author Chris Schaefer - */ -public class PersonFieldSetMapperTests { - private static final String[] TOKENS = new String[] { "jane", "doe" }; - private static final String[] NAMES = new String[] { "firstName", "lastName" }; - - @Test - public void testPersonFieldMapping() throws Exception { - FieldSet fieldSet = new DefaultFieldSet(TOKENS, NAMES); - - FieldSetMapper fieldSetMapper = new PersonFieldSetMapper(); - Person person = fieldSetMapper.mapFieldSet(fieldSet); - - assertNotNull("Received null Person", person); - assertNotNull("Received null first name", person.getFirstName()); - assertNotNull("Received null last name", person.getLastName()); - assertEquals("Received wrong first name", TOKENS[0], person.getFirstName()); - assertEquals("Received wrong last name", TOKENS[1], person.getLastName()); - } -} diff --git a/batch/file-ingest-sftp/src/test/java/org/springframework/ingest/processor/PersonItemProcessorTests.java b/batch/file-ingest-sftp/src/test/java/org/springframework/ingest/processor/PersonItemProcessorTests.java deleted file mode 100644 index 1477f58..0000000 --- a/batch/file-ingest-sftp/src/test/java/org/springframework/ingest/processor/PersonItemProcessorTests.java +++ /dev/null @@ -1,35 +0,0 @@ -package org.springframework.ingest.processor; - -import org.junit.Test; - -import org.springframework.batch.item.ItemProcessor; -import org.springframework.ingest.domain.Person; - -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertEquals; - -/** - * Test cases for PersonItemProcessor. - * - * @author Chris Schaefer - */ -public class PersonItemProcessorTests { - private static final String FIRST_NAME = "jane"; - private static final String LAST_NAME = "doe"; - - @Test - public void testPersonProcessing() throws Exception { - Person person = new Person(FIRST_NAME, LAST_NAME); - - ItemProcessor personItemProcessor = new PersonItemProcessor(); - Person transformedPerson = personItemProcessor.process(person); - - assertNotNull("Received null Person", transformedPerson); - assertNotNull("Received null first name", transformedPerson.getFirstName()); - assertNotNull("Received null last name", transformedPerson.getLastName()); - assertEquals("Invalid first name processing, should be uppercase", - person.getFirstName().toUpperCase(), transformedPerson.getFirstName()); - assertEquals("Invalid last name processing, should be uppercase", - person.getLastName().toUpperCase(), transformedPerson.getLastName()); - } -} diff --git a/batch/file-ingest/data/README.md b/batch/file-ingest/data/README.md new file mode 100644 index 0000000..9525b1b --- /dev/null +++ b/batch/file-ingest/data/README.md @@ -0,0 +1,8 @@ +Sample Data +--- + +This directory contains data for use with file ingest samples. + +`name-list.csv` contains over 5000 randomly generated names written as `first`,`last`. + +The `split` directory contains the same data split into 100+ files. diff --git a/batch/file-ingest/data/name-list.csv b/batch/file-ingest/data/name-list.csv new file mode 100644 index 0000000..5a47596 --- /dev/null +++ b/batch/file-ingest/data/name-list.csv @@ -0,0 +1,5494 @@ +Aaron,Aaberg +Aaron,Aaby +Abbey,Aadland +Abbie,Aagaard +Abby,Aakre +Abdul,Aaland +Abe,Aalbers +Abel,Aalderink +Abigail,Aalund +Abraham,Aamodt +Abram,Aamot +Ada,Aanderud +Adah,Aanenson +Adalberto,Aanerud +Adaline,Aarant +Adam,Aardema +Adam,Aarestad +Adan,Aarhus +Addie,Aaron +Adela,Aarons +Adelaida,Aaronson +Adelaide,Aarsvold +Adele,Aas +Adelia,Aasby +Adelina,Aase +Adeline,Aasen +Adell,Aavang +Adella,Abad +Adelle,Abadi +Adena,Abadie +Adina,Abair +Adolfo,Abaja +Adolph,Abajian +Adria,Abalos +Adrian,Abaloz +Adrian,Abar +Adriana,Abarca +Adriane,Abare +Adrianna,Abascal +Adrianne,Abasta +Adrien,Abate +Adriene,Abati +Adrienne,Abatiell +Afton,Abato +Agatha,Abatti +Agnes,Abaunza +Agnus,Abaya +Agripina,Abbadessa +Agueda,Abbamonte +Agustin,Abbas +Agustina,Abbasi +Ahmad,Abbassi +Ahmed,Abbate +Ai,Abbatiello +Aida,Abbay +Aide,Abbe +Aiko,Abbed +Aileen,Abbenante +Ailene,Abbey +Aimee,Abbinanti +Aisha,Abbington +Aja,Abbitt +Akiko,Abbot +Akilah,Abbott +Al,Abboud +Alaina,Abbruzzese +Alaine,Abbs +Alan,Abby +Alana,Abdalla +Alane,Abdallah +Alanna,Abdel +Alayna,Abdelal +Alba,Abdelaziz +Albert,Abdeldayen +Albert,Abdelhamid +Alberta,Abdella +Albertha,Abdelmuti +Albertina,Abdelrahman +Albertine,Abdelwahed +Alberto,Abdi +Albina,Abdin +Alda,Abdo +Alden,Abdon +Aldo,Abdool +Alease,Abdou +Alec,Abdul +Alecia,Abdula +Aleen,Abdulaziz +Aleida,Abdulkarim +Aleisha,Abdulla +Alejandra,Abdullah +Alejandrina,Abdullai +Alejandro,Abdulmateen +Alena,Abdulmuniem +Alene,Abdur +Alesha,Abe +Aleshia,Abeb +Alesia,Abed +Alessandra,Abedelah +Aleta,Abedi +Aletha,Abee +Alethea,Abegg +Alethia,Abeita +Alex,Abel +Alex,Abela +Alexa,Abelar +Alexander,Abelardo +Alexander,Abele +Alexandra,Abeles +Alexandria,Abell +Alexia,Abella +Alexis,Abellera +Alexis,Abelman +Alfonso,Abeln +Alfonzo,Abels +Alfred,Abelson +Alfreda,Aben +Alfredia,Abend +Alfredo,Abendroth +Ali,Aber +Ali,Abercombie +Alia,Abercrombie +Alica,Aberle +Alice,Abernatha +Alicia,Abernathy +Alida,Abernethy +Alina,Aberson +Aline,Abes +Alisa,Abeta +Alise,Abete +Alisha,Abetrani +Alishia,Abeyta +Alisia,Abide +Alison,Abigantus +Alissa,Abila +Alita,Abilay +Alix,Abild +Aliza,Abilez +Alla,Abina +Allan,Abington +Alleen,Abitong +Allegra,Abke +Allen,Abkemeier +Allen,Ablang +Allena,Ablao +Allene,Able +Allie,Ableman +Alline,Abler +Allison,Ables +Allyn,Ablin +Allyson,Abling +Alma,Abner +Almeda,Abnet +Almeta,Abney +Alona,Abo +Alonso,Abolafia +Alonzo,Abolt +Alpha,Abood +Alphonse,Aboshihata +Alphonso,Aboud +Alta,Aboudi +Altagracia,Aboulahoud +Altha,Aboulissan +Althea,Abousaleh +Alton,Aboytes +Alva,Abplanalp +Alva,Abrachinsky +Alvaro,Abraham +Alvera,Abrahamian +Alverta,Abrahams +Alvin,Abrahamsen +Alvina,Abrahamson +Alyce,Abram +Alycia,Abramek +Alysa,Abramian +Alyse,Abramoff +Alysha,Abramov +Alysia,Abramovich +Alyson,Abramovitz +Alyssa,Abramowitz +Amada,Abramowski +Amado,Abrams +Amal,Abramson +Amalia,Abrantes +Amanda,Abreau +Amber,Abrecht +Amberly,Abrego +Ambrose,Abrell +Amee,Abreo +Amelia,Abreu +America,Abrev +Ami,Abrew +Amie,Abrey +Amiee,Abrial +Amina,Abril +Amira,Abriola +Ammie,Abrom +Amos,Abron +Amparo,Abruzzese +Amy,Abruzzino +An,Abruzzo +Ana,Absalon +Anabel,Abshear +Analisa,Absher +Anamaria,Abshier +Anastacia,Abshire +Anastasia,Abson +Andera,Abston +Anderson,Abt +Andra,Abts +Andre,Abu +Andre,Abuaita +Andrea,Abubakr +Andrea,Abud +Andreas,Abuel +Andree,Abugn +Andres,Abuhl +Andrew,Abundis +Andrew,Abundiz +Andria,Aburto +Andy,Abusufait +Anette,Acal +Angel,Acampora +Angel,Accala +Angela,Accardi +Angele,Accardo +Angelena,Accetta +Angeles,Accetturo +Angelia,Accola +Angelic,Accomando +Angelica,Accornero +Angelika,Accosta +Angelina,Accurso +Angeline,Ace +Angelique,Acebedo +Angelita,Acebo +Angella,Acedo +Angelo,Acee +Angelo,Aceituno +Angelyn,Acencio +Angie,Aceret +Angila,Acerno +Angla,Acero +Angle,Acerra +Anglea,Aceto +Anh,Aceuedo +Anibal,Acevado +Anika,Aceveda +Anisa,Acevedo +Anisha,Aceves +Anissa,Acey +Anita,Acfalle +Anitra,Achane +Anja,Ache +Anjanette,Acheampong +Anjelica,Achee +Ann,Achekian +Anna,Achenbach +Annabel,Acheson +Annabell,Achille +Annabelle,Achilles +Annalee,Achin +Annalisa,Achor +Annamae,Achord +Annamaria,Achorn +Annamarie,Achter +Anne,Achterhof +Anneliese,Achzet +Annelle,Achziger +Annemarie,Acierno +Annett,Acimovic +Annetta,Ack +Annette,Ackah +Annice,Acken +Annie,Acker +Annika,Ackerley +Annis,Ackerly +Annita,Ackerman +Annmarie,Ackermann +Anthony,Ackers +Anthony,Ackerson +Antione,Ackert +Antionette,Ackies +Antoine,Ackins +Antoinette,Ackison +Anton,Ackiss +Antone,Ackland +Antonetta,Acklen +Antonette,Ackles +Antonia,Ackley +Antonia,Acklin +Antonietta,Ackman +Antonina,Ackmann +Antonio,Ackroyd +Antonio,Acly +Antony,Acoba +Antwan,Acocella +Anya,Acock +Apolonia,Acoff +April,Acor +Apryl,Acord +Ara,Acorda +Araceli,Acors +Aracelis,Acosta +Aracely,Acosto +Arcelia,Acothley +Archie,Acquaviva +Ardath,Acquilla +Ardelia,Acre +Ardell,Acree +Ardella,Acres +Ardelle,Acrey +Arden,Acri +Ardis,Acron +Ardith,Actis +Aretha,Acton +Argelia,Acuff +Argentina,Acuna +Ariana,Acy +Ariane,Ada +Arianna,Adachi +Arianne,Adair +Arica,Adalja +Arie,Adam +Ariel,Adamaitis +Ariel,Adamcik +Arielle,Adamczak +Arla,Adamczyk +Arlean,Adame +Arleen,Adamec +Arlen,Adamek +Arlena,Adames +Arlene,Adami +Arletha,Adamiak +Arletta,Adamik +Arlette,Adamis +Arlie,Adamitis +Arlinda,Adamo +Arline,Adamos +Arlyne,Adamowski +Armand,Adams +Armanda,Adamsen +Armandina,Adamski +Armando,Adamsky +Armida,Adamson +Arminda,Adamsonis +Arnetta,Adamyan +Arnette,Adan +Arnita,Adank +Arnold,Adas +Arnoldo,Adauto +Arnulfo,Adaway +Aron,Aday +Arron,Adcock +Art,Adcox +Arthur,Addair +Arthur,Addams +Artie,Addario +Arturo,Addeo +Arvilla,Adderley +Asa,Adderly +Asha,Addesso +Ashanti,Addicks +Ashely,Addie +Ashlea,Addiego +Ashlee,Addington +Ashleigh,Addis +Ashley,Addison +Ashley,Addleman +Ashli,Addo +Ashlie,Adduci +Ashly,Addy +Ashlyn,Ade +Ashton,Adebisi +Asia,Adee +Asley,Adel +Assunta,Adelblue +Astrid,Adelgren +Asuncion,Adelizzi +Athena,Adell +Aubrey,Adelman +Aubrey,Adelmann +Audie,Adelmund +Audra,Adels +Audrea,Adelsberg +Audrey,Adelson +Audria,Adelsperger +Audrie,Adelstein +Audry,Adema +August,Aden +Augusta,Adens +Augustina,Ader +Augustine,Aderhold +Augustine,Aderholdt +Augustus,Aderholt +Aundrea,Aderman +Aura,Aderson +Aurea,Ades +Aurelia,Adessa +Aurelio,Adesso +Aurora,Adey +Aurore,Adeyemo +Austin,Adger +Austin,Adham +Autumn,Adhami +Ava,Adi +Avelina,Adib +Avery,Adickes +Avery,Adie +Avis,Adil +Avril,Adinolfi +Awilda,Adjei +Ayako,Adjutant +Ayana,Adkerson +Ayanna,Adkin +Ayesha,Adkins +Azalee,Adkinson +Azucena,Adkison +Azzie,Adkisson +Babara,Adlam +Babette,Adle +Bailey,Adleman +Bambi,Adler +Bao,Adley +Barabara,Adling +Barb,Adloff +Barbar,Admas +Barbara,Admire +Barbera,Adner +Barbie,Adney +Barbra,Adolf +Bari,Adolfo +Barney,Adolfson +Barrett,Adolph +Barrie,Adolphe +Barry,Adolphsen +Bart,Adolphson +Barton,Adolphus +Basil,Adomaitis +Basilia,Adon +Bea,Adonis +Beata,Adorno +Beatrice,Adragna +Beatris,Adrian +Beatriz,Adriance +Beau,Adriano +Beaulah,Adrid +Bebe,Adrien +Becki,Adrion +Beckie,Adrovel +Becky,Adside +Bee,Adsit +Belen,Adu +Belia,Aduddell +Belinda,Adule +Belkis,Adwell +Bell,Ady +Bella,Adzhabakyan +Belle,Aegerter +Belva,Aeillo +Ben,Aeling +Benedict,Aemmer +Benita,Aerni +Benito,Aerts +Benjamin,Aery +Bennett,Aeschbacher +Bennie,Aeschliman +Bennie,Aeschlimann +Benny,Afable +Benton,Afalava +Berenice,Afan +Berna,Afanador +Bernadette,Affagato +Bernadine,Affeld +Bernard,Affelt +Bernarda,Affeltranger +Bernardina,Affleck +Bernardine,Afflick +Bernardo,Affolter +Berneice,Affronti +Bernetta,Aflalo +Bernice,Afoa +Bernie,Afonso +Bernie,Africa +Berniece,Afshar +Bernita,Afshari +Berry,Afton +Berry,Afurong +Bert,Afzal +Berta,Agamao +Bertha,Agan +Bertie,Agans +Bertram,Agar +Beryl,Agard +Bess,Agarwal +Bessie,Agbayani +Beth,Agbisit +Bethanie,Agcaoili +Bethann,Age +Bethany,Ageboi +Bethel,Agee +Betsey,Agel +Betsy,Agemy +Bette,Agena +Bettie,Agent +Bettina,Ager +Betty,Agers +Bettyann,Agerter +Bettye,Agerton +Beula,Aggarwal +Beulah,Aggas +Bev,Aggers +Beverlee,Agib +Beverley,Agilar +Beverly,Agin +Bianca,Agins +Bibi,Agle +Bill,Agler +Billi,Agliam +Billie,Agne +Billie,Agnelli +Billy,Agnello +Billy,Agner +Billye,Agnes +Birdie,Agnew +Birgit,Agney +Blaine,Agni +Blair,Agnor +Blair,Agoff +Blake,Agonoy +Blake,Agor +Blanca,Agoras +Blanch,Agoro +Blanche,Agosta +Blondell,Agosti +Blossom,Agostinelli +Blythe,Agostini +Bo,Agostino +Bob,Agosto +Bobbi,Agpaoa +Bobbie,Agramonte +Bobbie,Agrawal +Bobby,Agre +Bobby,Agreda +Bobbye,Agredano +Bobette,Agrela +Bok,Agresta +Bong,Agreste +Bonita,Agresti +Bonnie,Agresto +Bonny,Agricola +Booker,Agriesti +Boris,Agrios +Boyce,Agro +Boyd,Agron +Brad,Agtarap +Bradford,Aguada +Bradley,Aguado +Bradly,Aguallo +Brady,Aguas +Brain,Aguayo +Branda,Agudelo +Brande,Agudo +Brandee,Agueda +Branden,Aguele +Brandi,Aguero +Brandie,Aguiar +Brandon,Aguila +Brandon,Aguilar +Brandy,Aguiler +Brant,Aguilera +Breana,Aguillar +Breann,Aguillard +Breanna,Aguillera +Breanne,Aguillon +Bree,Aguinaga +Brenda,Aguinaldo +Brendan,Aguiniga +Brendon,Aguino +Brenna,Aguire +Brent,Aguirre +Brenton,Agular +Bret,Aguliar +Brett,Agumga +Brett,Agundez +Brian,Agunos +Brian,Aguon +Briana,Agurs +Brianna,Agustin +Brianne,Agustine +Brice,Agustino +Bridget,Agyeman +Bridgett,Ahal +Bridgette,Ahalt +Brigette,Aharon +Brigid,Aharoni +Brigida,Aharonof +Brigitte,Ahart +Brinda,Ahaus +Britany,Ahearn +Britney,Ahern +Britni,Aherns +Britt,Ahhee +Britt,Ahia +Britta,Ahimud +Brittaney,Ahl +Brittani,Ahlberg +Brittanie,Ahlborn +Brittany,Ahlbrecht +Britteny,Ahle +Brittney,Ahlemeyer +Brittni,Ahler +Brittny,Ahlers +Brock,Ahles +Broderick,Ahlf +Bronwyn,Ahlfield +Brook,Ahlgren +Brooke,Ahlheim +Brooks,Ahlin +Bruce,Ahlm +Bruna,Ahlman +Brunilda,Ahlo +Bruno,Ahlquist +Bryan,Ahlstedt +Bryanna,Ahlstrom +Bryant,Ahluwalia +Bryce,Ahmad +Brynn,Ahmadi +Bryon,Ahmann +Buck,Ahmau +Bud,Ahmed +Buddy,Ahn +Buena,Ahne +Buffy,Ahnell +Buford,Ahner +Bula,Aho +Bulah,Aholt +Bunny,Ahonen +Burl,Ahr +Burma,Ahrendes +Burt,Ahrends +Burton,Ahrendt +Buster,Ahrenholtz +Byron,Ahrenholz +Caitlin,Ahrens +Caitlyn,Ahrenstorff +Calandra,Ahrent +Caleb,Ahrns +Calista,Ahsan +Callie,Ahsing +Calvin,Ahuja +Camelia,Ahumada +Camellia,Ahuna +Cameron,Ahyet +Cameron,Ahyou +Cami,Aiava +Camie,Aichele +Camila,Aicklen +Camilla,Aid +Camille,Aidt +Cammie,Aiello +Cammy,Aievoli +Candace,Aigner +Candance,Aihara +Candelaria,Aiken +Candi,Aikens +Candice,Aikey +Candida,Aikin +Candie,Aikins +Candis,Aikman +Candra,Ailes +Candy,Ailey +Candyce,Ailiff +Caprice,Aills +Cara,Ailor +Caren,Ailshire +Carey,Ailstock +Carey,Ailsworth +Cari,Ailts +Caridad,Aimbez +Carie,Aimone +Carin,Aina +Carina,Aines +Carisa,Ainge +Carissa,Aini +Carita,Ainley +Carl,Ainscough +Carl,Ainsley +Carla,Ainslie +Carlee,Ainsworth +Carleen,Aiola +Carlena,Aiona +Carlene,Aipopo +Carletta,Aiporlani +Carley,Aipperspach +Carli,Aird +Carlie,Airhart +Carline,Airington +Carlita,Airola +Carlo,Airth +Carlos,Aispuro +Carlos,Aita +Carlota,Aitcheson +Carlotta,Aitchison +Carlton,Aites +Carly,Aitken +Carlyn,Aitkin +Carma,Aitkins +Carman,Aiton +Carmel,Aiu +Carmela,Aiudi +Carmelia,Aiuto +Carmelina,Aivao +Carmelita,Aiyer +Carmella,Aja +Carmelo,Ajani +Carmen,Ajasin +Carmen,Ajayi +Carmina,Ajello +Carmine,Ajoku +Carmon,Ajose +Carol,Akahi +Carol,Akal +Carola,Akamine +Carolann,Akamiro +Carole,Akana +Carolee,Akande +Carolin,Akapo +Carolina,Akard +Caroline,Akau +Caroll,Akawanzie +Carolyn,Akbar +Carolyne,Akbari +Carolynn,Ake +Caron,Akel +Caroyln,Akemon +Carri,Aken +Carrie,Aker +Carrol,Akerley +Carrol,Akerman +Carroll,Akers +Carroll,Akerson +Carry,Akery +Carson,Akes +Carter,Akey +Cary,Akhand +Cary,Akhavan +Caryl,Akhtar +Carylon,Aki +Caryn,Akiereisen +Casandra,Akim +Casey,Akima +Casey,Akimseu +Casie,Akin +Casimira,Akinrefon +Cassandra,Akins +Cassaundra,Akinyooye +Cassey,Akiona +Cassi,Akiyama +Cassidy,Akkerman +Cassie,Akles +Cassondra,Akley +Cassy,Akmal +Catalina,Ako +Catarina,Akoni +Caterina,Akpan +Catharine,Akram +Catherin,Akre +Catherina,Akridge +Catherine,Akright +Cathern,Aksamit +Catheryn,Aksoy +Cathey,Akuchie +Cathi,Akuna +Cathie,Akwei +Cathleen,Ala +Cathrine,Alacano +Cathryn,Alagna +Cathy,Alai +Catina,Alaibilla +Catrice,Alaimo +Catrina,Alalem +Cayla,Alam +Cecelia,Alambar +Cecil,Alameda +Cecil,Alameida +Cecila,Alamia +Cecile,Alamilla +Cecilia,Alamillo +Cecille,Alamin +Cecily,Alamo +Cedric,Alamos +Cedrick,Alampi +Celena,Alan +Celesta,Aland +Celeste,Alanis +Celestina,Alaniz +Celestine,Alanko +Celia,Alano +Celina,Alapai +Celinda,Alar +Celine,Alarcon +Celsa,Alarcone +Ceola,Alarid +Cesar,Alarie +Chad,Alario +Chadwick,Alas +Chae,Alatorre +Chan,Alatosse +Chana,Alattar +Chance,Alavi +Chanda,Alawdi +Chandra,Alaya +Chanel,Alba +Chanell,Albach +Chanelle,Albair +Chang,Albaladejo +Chang,Alban +Chantal,Albanese +Chantay,Albanez +Chante,Albang +Chantel,Albani +Chantell,Albano +Chantelle,Albany +Chara,Albarado +Charis,Albarazi +Charise,Albares +Charissa,Albarez +Charisse,Albarracin +Charita,Albarran +Charity,Albaugh +Charla,Albe +Charleen,Albea +Charlena,Albee +Charlene,Albelo +Charles,Alben +Charles,Alber +Charlesetta,Alberda +Charlette,Alberding +Charley,Alberg +Charlie,Albergotti +Charlie,Alberico +Charline,Albero +Charlott,Alberro +Charlotte,Alberry +Charlsie,Albers +Charlyn,Alberson +Charmain,Albert +Charmaine,Alberta +Charolette,Alberthal +Chas,Alberti +Chase,Albertine +Chasidy,Albertini +Chasity,Alberto +Chassidy,Alberts +Chastity,Albertsen +Chau,Albertson +Chauncey,Alberty +Chaya,Albery +Chelsea,Albin +Chelsey,Albini +Chelsie,Albino +Cher,Albiston +Chere,Albor +Cheree,Alborn +Cherelle,Albornoz +Cheri,Albracht +Cherie,Albrashi +Cherilyn,Albrecht +Cherise,Albrekht +Cherish,Albright +Cherly,Albriton +Cherlyn,Albrittain +Cherri,Albritton +Cherrie,Albro +Cherry,Albrough +Cherryl,Albu +Chery,Albury +Cheryl,Albus +Cheryle,Alby +Cheryll,Alcaide +Chester,Alcala +Chet,Alcalde +Cheyenne,Alcantar +Chi,Alcantara +Chi,Alcantas +Chia,Alcaoa +Chieko,Alcaraz +Chin,Alcazar +China,Alce +Ching,Alcide +Chiquita,Alcina +Chloe,Alcine +Chong,Alcini +Chong,Alcivar +Chris,Alcocer +Chris,Alcock +Chrissy,Alcombright +Christa,Alcon +Christal,Alconcel +Christeen,Alcorn +Christel,Alcorta +Christen,Alcoser +Christena,Alcosiba +Christene,Alcott +Christi,Aldaba +Christia,Aldaco +Christian,Aldama +Christian,Aldana +Christiana,Aldapa +Christiane,Aldape +Christie,Aldarondo +Christin,Aldas +Christina,Aldava +Christine,Alday +Christinia,Aldaz +Christoper,Aldecoa +Christopher,Alden +Christopher,Alder +Christy,Alderete +Chrystal,Alderfer +Chu,Alderink +Chuck,Alderman +Chun,Alderson +Chung,Alderton +Chung,Aldi +Ciara,Aldinger +Cicely,Aldo +Ciera,Aldonza +Cierra,Aldous +Cinda,Aldred +Cinderella,Aldredge +Cindi,Aldrege +Cindie,Aldrete +Cindy,Aldrich +Cinthia,Aldridge +Cira,Aldrige +Clair,Aldrow +Clair,Aldworth +Claire,Alea +Clara,Alecca +Clare,Aleem +Clarence,Aleff +Clarence,Alegar +Claretha,Alegi +Claretta,Alegre +Claribel,Alegria +Clarice,Aleizar +Clarinda,Alejandre +Clarine,Alejandrez +Claris,Alejandro +Clarisa,Alejo +Clarissa,Alejos +Clarita,Alekna +Clark,Aleksey +Classie,Aleman +Claud,Alemany +Claude,Alen +Claude,Aleo +Claudette,Alepin +Claudia,Alequin +Claudie,Aler +Claudine,Alers +Claudio,Alert +Clay,Alerte +Clayton,Ales +Clelia,Alesci +Clemencia,Alescio +Clement,Aleshire +Clemente,Alesi +Clementina,Alesna +Clementine,Alessandrini +Clemmie,Alessandro +Cleo,Alessandroni +Cleo,Alesse +Cleopatra,Alessi +Cleora,Alessio +Cleotilde,Alevedo +Cleta,Alevras +Cletus,Alewine +Cleveland,Alex +Cliff,Alexader +Clifford,Alexaki +Clifton,Alexakis +Clint,Alexander +Clinton,Alexanders +Clora,Alexandra +Clorinda,Alexandre +Clotilde,Alexandria +Clyde,Alexandropoul +Clyde,Alexanian +Codi,Alexender +Cody,Alexidor +Cody,Alexion +Colby,Alexiou +Colby,Alexis +Cole,Alexnder +Coleen,Alexopoulos +Coleman,Alexy +Colene,Alexzander +Coletta,Aley +Colette,Aleyandrez +Colin,Alf +Colleen,Alfandre +Collen,Alfano +Collene,Alfaro +Collette,Alfera +Collin,Alferez +Colton,Alfero +Columbus,Alff +Concepcion,Alfieri +Conception,Alfiero +Concetta,Alfisi +Concha,Alfonsi +Conchita,Alfonso +Connie,Alfonzo +Connie,Alford +Conrad,Alfred +Constance,Alfredo +Consuela,Alfreds +Consuelo,Alfrey +Contessa,Alfson +Cora,Algarin +Coral,Alge +Coralee,Algee +Coralie,Algeo +Corazon,Alger +Cordelia,Alghamdi +Cordell,Algien +Cordia,Algier +Cordie,Algire +Coreen,Algood +Corene,Alguire +Coretta,Alhaddad +Corey,Alhambra +Corey,Alhameed +Cori,Alhusseini +Corie,Ali +Corina,Aliaga +Corine,Aliano +Corinna,Alias +Corinne,Aliberti +Corliss,Alibozek +Cornelia,Alicandro +Cornelius,Alice +Cornell,Alicea +Corrie,Alicer +Corrin,Alicia +Corrina,Alicuben +Corrine,Alie +Corrinne,Alier +Cortez,Aliff +Cortney,Alig +Cory,Alim +Cory,Aliment +Courtney,Alimento +Courtney,Alimo +Coy,Aline +Craig,Alioto +Creola,Aliotta +Cris,Alipio +Criselda,Alire +Crissy,Alires +Crista,Alirez +Cristal,Alisauskas +Cristen,Alison +Cristi,Alix +Cristie,Alizadeh +Cristin,Aljemal +Cristina,Alkana +Cristine,Alkbsh +Cristobal,Alkema +Cristopher,Alken +Cristy,Alkins +Cruz,Alkire +Cruz,All +Crysta,Allaband +Crystal,Allabaugh +Crystle,Allah +Cuc,Allain +Curt,Allaire +Curtis,Allam +Curtis,Allaman +Cyndi,Allamon +Cyndy,Allamong +Cynthia,Allan +Cyril,Allanson +Cyrstal,Allara +Cyrus,Allard +Cythia,Allateef +Dacia,Allaway +Dagmar,Allbee +Dagny,Allbert +Dahlia,Allbones +Daina,Allbright +Daine,Allbritten +Daisey,Allbritton +Daisy,Allcock +Dakota,Allcorn +Dale,Allday +Dale,Allder +Dalene,Alldredge +Dalia,Allebach +Dalila,Allee +Dallas,Allegood +Dallas,Allegra +Dalton,Allegre +Damaris,Allegretta +Damian,Allegretti +Damien,Allegrini +Damion,Allegrucci +Damon,Alleman +Dan,Allemand +Dan,Allemond +Dana,Allen +Dana,Allenbach +Danae,Allenbaugh +Dane,Allenbrand +Danelle,Allende +Danette,Allender +Dani,Allendorf +Dania,Allenson +Danial,Allensworth +Danica,Aller +Daniel,Allerman +Daniel,Allers +Daniela,Allerton +Daniele,Alleruzzo +Daniell,Allery +Daniella,Alles +Danielle,Alleshouse +Danika,Allessi +Danille,Allessio +Danilo,Alleva +Danita,Allevato +Dann,Allex +Danna,Alley +Dannette,Alleyne +Dannie,Allford +Dannie,Allgaeuer +Dannielle,Allgaier +Danny,Allgeier +Dante,Allgeyer +Danuta,Allgier +Danyel,Allgire +Danyell,Allgood +Danyelle,Allhands +Daphine,Alli +Daphne,Alliance +Dara,Allie +Darby,Alligood +Darcel,Alliman +Darcey,Allin +Darci,Allinder +Darcie,Alling +Darcy,Allinger +Darell,Allington +Daren,Allio +Daria,Allis +Darin,Allison +Dario,Alliston +Darius,Allman +Darla,Allmand +Darleen,Allmon +Darlena,Allmond +Darlene,Allnutt +Darline,Allocca +Darnell,Allocco +Darnell,Allon +Daron,Allor +Darrel,Alloway +Darrell,Allphin +Darren,Allred +Darrick,Allridge +Darrin,Alls +Darron,Allsbrook +Darryl,Allsbrooks +Darwin,Allscheid +Daryl,Allshouse +Daryl,Allsop +Dave,Allston +David,Allstott +David,Allsup +Davida,Allton +Davina,Alltop +Davis,Allum +Dawn,Allums +Dawna,Allvin +Dawne,Allwardt +Dayle,Allwood +Dayna,Ally +Daysi,Allyn +Deadra,Allyne +Dean,Alm +Dean,Alma +Deana,Almada +Deandra,Almaguer +Deandre,Almajhoub +Deandrea,Alman +Deane,Almand +Deangelo,Almanza +Deann,Almanzar +Deanna,Almaras +Deanne,Almaraz +Deb,Almarez +Debbi,Almario +Debbie,Almarza +Debbra,Almas +Debby,Almasi +Debera,Almazan +Debi,Alme +Debora,Almeda +Deborah,Almeida +Debra,Almen +Debrah,Almenar +Debroah,Almendarez +Dede,Almengor +Dedra,Almerico +Dee,Almestica +Dee,Almeter +Deeann,Almeyda +Deeanna,Almgren +Deedee,Almiron +Deedra,Almodova +Deena,Almodovar +Deetta,Almon +Deidra,Almond +Deidre,Almonte +Deirdre,Almos +Deja,Almquist +Del,Almstead +Delaine,Almsteadt +Delana,Almy +Delbert,Alnas +Delcie,Alnoor +Delena,Alnutt +Delfina,Alo +Delia,Aloan +Delicia,Aloe +Delila,Aloi +Delilah,Aloia +Delinda,Aloisi +Delisa,Alonge +Dell,Alongi +Della,Alonso +Delma,Alonza +Delmar,Alonzo +Delmer,Alosa +Delmy,Alosta +Delois,Alouf +Deloise,Aloy +Delora,Alpaugh +Deloras,Alper +Delores,Alperin +Deloris,Alpern +Delorse,Alpers +Delpha,Alpert +Delphia,Alpha +Delphine,Alpheaus +Delsie,Alphin +Delta,Alphonse +Demarcus,Alphonso +Demetra,Alpis +Demetria,Alpizar +Demetrice,Alquesta +Demetrius,Alquicira +Demetrius,Alquijay +Dena,Alquisira +Denae,Alrais +Deneen,Alred +Denese,Alrich +Denice,Alrod +Denis,Alsandor +Denise,Alsaqri +Denisha,Alsberry +Denisse,Alsbrook +Denita,Alsbrooks +Denna,Alsbury +Dennis,Alsdon +Dennis,Alsheimer +Dennise,Alshouse +Denny,Alsina +Denny,Alsing +Denver,Alsip +Denyse,Alsman +Deon,Alsobrook +Deon,Alsobrooks +Deonna,Alson +Derek,Alsop +Derick,Alspach +Derrick,Alspaugh +Deshawn,Alstad +Desirae,Alston +Desire,Alstott +Desiree,Alstrom +Desmond,Alsup +Despina,Alt +Dessie,Altadonna +Destiny,Altamirano +Detra,Altamiruno +Devin,Altaras +Devin,Altavilla +Devon,Altemus +Devon,Altenbach +Devona,Altenburg +Devora,Altenhofen +Devorah,Alter +Dewayne,Alteri +Dewey,Alterio +Dewitt,Alterman +Dexter,Altermatt +Dia,Altes +Diamond,Altew +Dian,Althaus +Diana,Althauser +Diane,Altheimer +Diann,Althiser +Dianna,Althoff +Dianne,Althouse +Dick,Altic +Diedra,Altice +Diedre,Altidor +Diego,Altier +Dierdre,Altieri +Digna,Altiery +Dillon,Altig +Dimple,Altimus +Dina,Altizer +Dinah,Altken +Dino,Altman +Dinorah,Altmann +Dion,Altmark +Dion,Altmiller +Dione,Altmire +Dionna,Alto +Dionne,Altobell +Dirk,Altobelli +Divina,Altobello +Dixie,Altom +Dodie,Altomare +Dollie,Altomari +Dolly,Altomonte +Dolores,Alton +Doloris,Altonen +Domenic,Altop +Domenica,Altreche +Dominga,Altringer +Domingo,Altro +Dominic,Altrogge +Dominica,Altschuler +Dominick,Altshuler +Dominique,Altsisi +Dominique,Altstatt +Dominque,Altum +Domitila,Altvater +Domonique,Altwies +Don,Alty +Dona,Alu +Donald,Aluarado +Donald,Aluarez +Donella,Aluise +Donetta,Alukonis +Donette,Alumbaugh +Dong,Alummoottil +Dong,Aluqdah +Donita,Alva +Donn,Alvacado +Donna,Alvalle +Donnell,Alvanas +Donnetta,Alvanez +Donnette,Alvara +Donnie,Alvarado +Donnie,Alvardo +Donny,Alvarenga +Donovan,Alvarengo +Donte,Alvares +Donya,Alvarez +Dora,Alvaro +Dorathy,Alvarracin +Dorcas,Alvarran +Doreatha,Alvear +Doreen,Alvelo +Dorene,Alven +Doretha,Alverado +Dorethea,Alveraz +Doretta,Alverest +Dori,Alverez +Doria,Alverio +Dorian,Alvernaz +Dorian,Alvero +Dorie,Alverson +Dorinda,Alves +Dorine,Alvey +Doris,Alvez +Dorla,Alvia +Dorotha,Alviar +Dorothea,Alvidrez +Dorothy,Alvin +Dorris,Alvine +Dorsey,Alvino +Dortha,Alvira +Dorthea,Alvirez +Dorthey,Alvis +Dorthy,Alviso +Dot,Alvizo +Dottie,Alvord +Dotty,Alvorez +Doug,Alwan +Douglas,Alwang +Douglass,Alward +Dovie,Alwardt +Doyle,Alway +Dreama,Alwazan +Drema,Alwin +Drew,Alwine +Drew,Aly +Drucilla,Alyea +Drusilla,Alzaga +Duane,Alzate +Dudley,Alzugaray +Dulce,Amabile +Dulcie,Amacher +Duncan,Amack +Dung,Amacker +Dusti,Amadeo +Dustin,Amadi +Dusty,Amadio +Dusty,Amado +Dwain,Amadon +Dwana,Amador +Dwayne,Amailla +Dwight,Amaker +Dyan,Amalfitano +Dylan,Amalong +Earl,Aman +Earle,Amancio +Earlean,Amann +Earleen,Amano +Earlene,Amante +Earlie,Amanza +Earline,Amar +Earnest,Amara +Earnestine,Amaral +Eartha,Amarante +Easter,Amargo +Eboni,Amari +Ebonie,Amarian +Ebony,Amarillas +Echo,Amaro +Ed,Amas +Eda,Amason +Edda,Amass +Eddie,Amat +Eddie,Amati +Eddy,Amato +Edelmira,Amauty +Eden,Amavisca +Edgar,Amaya +Edgardo,Amazan +Edie,Ambagis +Edison,Ambeau +Edith,Amber +Edmond,Amberg +Edmund,Ambers +Edmundo,Amberson +Edna,Ambert +Edra,Amble +Edris,Ambler +Eduardo,Amboise +Edward,Amboree +Edward,Amborn +Edwardo,Ambres +Edwin,Ambrister +Edwina,Ambriz +Edyth,Ambrogi +Edythe,Ambrose +Effie,Ambrosia +Efrain,Ambrosini +Efren,Ambrosino +Ehtel,Ambrosio +Eileen,Ambrosius +Eilene,Ambrosone +Ela,Ambroz +Eladia,Ambroziak +Elaina,Ambuehl +Elaine,Amburgey +Elana,Amburgy +Elane,Amburn +Elanor,Amdahl +Elayne,Amderson +Elba,Amedee +Elbert,Amedeo +Elda,Amedro +Elden,Ameduri +Eldon,Ameen +Eldora,Ameigh +Eldridge,Amejorado +Eleanor,Amel +Eleanora,Amela +Eleanore,Amelang +Elease,Ameling +Elena,Amelio +Elene,Amell +Eleni,Amelung +Elenor,Amemiya +Elenora,Amen +Elenore,Amend +Eleonor,Amendola +Eleonora,Ament +Eleonore,Amenta +Elfreda,Amentler +Elfrieda,Amento +Elfriede,Amer +Eli,America +Elia,American +Eliana,Amerine +Elias,Amerio +Elicia,Amerman +Elida,Amero +Elidia,Amerson +Elijah,Amert +Elin,Ames +Elina,Amesbury +Elinor,Amescua +Elinore,Amesquieto +Elisa,Amesquita +Elisabeth,Amey +Elise,Amezaga +Eliseo,Amezcua +Elisha,Amezquita +Elisha,Amici +Elissa,Amick +Eliz,Amico +Eliza,Amicone +Elizabet,Amidei +Elizabeth,Amidi +Elizbeth,Amidon +Elizebeth,Amie +Elke,Amigo +Ella,Amigon +Ellamae,Amill +Ellan,Amin +Ellen,Amini +Ellena,Aminov +Elli,Amiot +Ellie,Amir +Elliot,Amirault +Elliott,Amiri +Ellis,Amirian +Ellis,Amis +Ellsworth,Amisano +Elly,Amison +Ellyn,Amistadi +Elma,Amistoso +Elmer,Amith +Elmer,Amlin +Elmira,Ammann +Elmo,Ammar +Elna,Ammer +Elnora,Ammerman +Elodia,Ammirata +Elois,Ammirati +Eloisa,Ammirato +Eloise,Ammon +Elouise,Ammonds +Eloy,Ammons +Elroy,Amo +Elsa,Amoa +Else,Amoah +Elsie,Amoako +Elsy,Amodei +Elton,Amodeo +Elva,Amodio +Elvera,Amodt +Elvia,Amoe +Elvie,Amolsch +Elvin,Amon +Elvina,Amonette +Elvira,Amons +Elvis,Amor +Elwanda,Amore +Elwood,Amorello +Elyse,Amores +Elza,Amoriello +Ema,Amorim +Emanuel,Amorin +Emelda,Amormino +Emelia,Amoros +Emelina,Amorose +Emeline,Amorosi +Emely,Amoroso +Emerald,Amoruso +Emerita,Amory +Emerson,Amos +Emery,Amoss +Emiko,Amott +Emil,Amour +Emile,Amous +Emilee,Amparan +Emilia,Amparo +Emilie,Amphy +Emilio,Ampy +Emily,Amr +Emma,Amrein +Emmaline,Amrhein +Emmanuel,Amrich +Emmett,Amrine +Emmie,Amsbaugh +Emmitt,Amsberry +Emmy,Amsdell +Emogene,Amsden +Emory,Amsili +Ena,Amsinger +Enda,Amsler +Enedina,Amsley +Eneida,Amspaugh +Enid,Amspoker +Enoch,Amstein +Enola,Amster +Enrique,Amsterdam +Enriqueta,Amstrong +Epifania,Amstutz +Era,Amtower +Erasmo,Amundsen +Eric,Amundson +Eric,Amunrud +Erica,Amuso +Erich,Amweg +Erick,Amy +Ericka,Amyot +Erik,Amyotte +Erika,Amys +Erin,Amyx +Erin,An +Erinn,Ana +Erlene,Anable +Erlinda,Anacker +Erline,Anadio +Erma,Anagnos +Ermelinda,Anagnost +Erminia,Anagnostou +Erna,Anakalea +Ernest,Analla +Ernestina,Anand +Ernestine,Anania +Ernesto,Ananias +Ernie,Anasagasti +Errol,Anast +Ervin,Anastacio +Erwin,Anastas +Eryn,Anastasi +Esmeralda,Anastasia +Esperanza,Anastasiades +Essie,Anastasio +Esta,Anastos +Esteban,Anauo +Estefana,Anawalt +Estela,Anawaty +Estell,Anaya +Estella,Ancalade +Estelle,Ancar +Ester,Ancel +Esther,Ancelet +Estrella,Ancell +Etha,Ancheta +Ethan,Anchondo +Ethel,Anchors +Ethelene,Ancic +Ethelyn,Ancira +Ethyl,Anciso +Etsuko,Ancona +Etta,Ancrum +Ettie,Anctil +Eufemia,Ancy +Eugena,Anda +Eugene,Andalora +Eugene,Andary +Eugenia,Andaverde +Eugenie,Andaya +Eugenio,Andebe +Eula,Andel +Eulah,Andelman +Eulalia,Ander +Eun,Andera +Euna,Anderberg +Eunice,Andere +Eura,Anderegg +Eusebia,Anderholm +Eusebio,Anderl +Eustolia,Anderlik +Eva,Anderman +Evalyn,Anderon +Evan,Anders +Evan,Andersen +Evangelina,Anderson +Evangeline,Andersson +Eve,Anderst +Evelia,Andert +Evelin,Anderton +Evelina,Andes +Eveline,Andeson +Evelyn,Andina +Evelyne,Anding +Evelynn,Andino +Everett,Andis +Everette,Ando +Evette,Andoh +Evia,Andon +Evie,Andonian +Evita,Andra +Evon,Andrachak +Evonne,Andracki +Ewa,Andrada +Exie,Andrade +Ezekiel,Andrades +Ezequiel,Andradez +Ezra,Andrado +Fabian,Andrae +Fabiola,Andrango +Fae,Andras +Fairy,Andre +Faith,Andrea +Fallon,Andreadis +Fannie,Andreas +Fanny,Andreasen +Farah,Andreason +Farrah,Andreassen +Fatima,Andreassi +Fatimah,Andreatta +Faustina,Andree +Faustino,Andreen +Fausto,Andreessen +Faviola,Andregg +Fawn,Andren +Fay,Andreola +Faye,Andreoli +Fe,Andreoni +Federico,Andreotti +Felecia,Andreozzi +Felica,Andrepont +Felice,Andres +Felicia,Andresen +Felicidad,Andress +Felicita,Andreu +Felicitas,Andreula +Felipa,Andrew +Felipe,Andrews +Felisa,Andrian +Felisha,Andrich +Felix,Andrick +Felton,Andries +Ferdinand,Andringa +Fermin,Andrino +Fermina,Andrion +Fern,Andriopulos +Fernanda,Andris +Fernande,Andrle +Fernando,Androde +Ferne,Androes +Fidel,Androlewicz +Fidela,Andronis +Fidelia,Andros +Filiberto,Androsky +Filomena,Andrson +Fiona,Andrulis +Flavia,Andrus +Fleta,Andruss +Fletcher,Andruszkiewic +Flo,Andruzzi +Flor,Andry +Flora,Andrzejczak +Florance,Andrzejczyk +Florence,Andrzejewski +Florencia,Andueza +Florencio,Andujar +Florene,Andujo +Florentina,Andy +Florentino,Andzulis +Floretta,Anecelle +Floria,Anelli +Florida,Anello +Florinda,Anene +Florine,Anerton +Florrie,Anes +Flossie,Aneshansley +Floy,Anesi +Floyd,Anestos +Fonda,Anetsberger +Forest,Anewalt +Forrest,Aney +Foster,Anez +Fran,Anfinson +France,Ang +Francene,Angalich +Frances,Angarola +Frances,Ange +Francesca,Angel +Francesco,Angela +Franchesca,Angelbeck +Francie,Angeles +Francina,Angeletti +Francine,Angeli +Francis,Angelica +Francis,Angelico +Francisca,Angelilli +Francisco,Angelillo +Francisco,Angeline +Francoise,Angelini +Frank,Angelino +Frank,Angell +Frankie,Angelle +Frankie,Angello +Franklin,Angellotti +Franklyn,Angelo +Fransisca,Angelocci +Fred,Angeloff +Fred,Angelone +Freda,Angeloni +Fredda,Angeloro +Freddie,Angelos +Freddie,Angelotti +Freddy,Angelou +Frederic,Angelovich +Frederica,Angelozzi +Frederick,Angelson +Fredericka,Angelucci +Fredia,Anger +Fredric,Angerer +Fredrick,Angerman +Fredricka,Angermeier +Freeda,Angeron +Freeman,Angers +Freida,Angert +Frida,Angevine +Frieda,Angiano +Fritz,Angier +Fumiko,Angilello +Gabriel,Angileri +Gabriel,Angilletta +Gabriela,Angiolelli +Gabriele,Angiolillo +Gabriella,Angione +Gabrielle,Angis +Gail,Anglada +Gail,Anglade +Gala,Angland +Gale,Angle +Gale,Anglea +Galen,Angleberger +Galina,Anglebrandt +Garfield,Anglemyer +Garland,Anglen +Garnet,Angles +Garnett,Angleton +Garret,Angley +Garrett,Anglin +Garry,Anglum +Garth,Angocicco +Gary,Angold +Gary,Angolo +Gaston,Angon +Gavin,Angotti +Gay,Angove +Gaye,Angrisano +Gayla,Angry +Gayle,Angst +Gayle,Angstadt +Gaylene,Angton +Gaylord,Anguiano +Gaynell,Angulo +Gaynelle,Angus +Gearldine,Angustia +Gema,Angviano +Gemma,Angwin +Gena,Anhalt +Genaro,Anhorn +Gene,Anibal +Gene,Anichini +Genesis,Anick +Geneva,Anidi +Genevie,Aniello +Genevieve,Animashaun +Genevive,Aningalan +Genia,Aninion +Genie,Aniol +Genna,Anis +Gennie,Anitok +Genny,Ankenman +Genoveva,Ankeny +Geoffrey,Anker +Georgann,Ankersen +George,Anklam +George,Ankney +Georgeann,Ankrapp +Georgeanna,Ankrom +Georgene,Ankrum +Georgetta,Anliker +Georgette,Ann +Georgia,Anna +Georgiana,Annabel +Georgiann,Annable +Georgianna,Annal +Georgianne,Annala +Georgie,Annan +Georgina,Annand +Georgine,Annarino +Gerald,Annarummo +Gerald,Annarumo +Geraldine,Annas +Geraldo,Anne +Geralyn,Anneler +Gerard,Annen +Gerardo,Annese +Gerda,Anness +Geri,Annett +Germaine,Annette +German,Annibale +Gerri,Annicchiarico +Gerry,Annichiarico +Gerry,Anning +Gertha,Annino +Gertie,Annis +Gertrud,Anno +Gertrude,Annon +Gertrudis,Annonio +Gertude,Annunziata +Ghislaine,Annuzzi +Gia,Ano +Gianna,Anoe +Gidget,Anolick +Gigi,Anon +Gil,Anos +Gilbert,Anreozzi +Gilberte,Ansara +Gilberto,Ansari +Gilda,Ansbacher +Gillian,Ansbro +Gilma,Anschutz +Gina,Ansel +Ginette,Ansell +Ginger,Anselm +Ginny,Anselmi +Gino,Anselmo +Giovanna,Anshutz +Giovanni,Ansley +Gisela,Anslinger +Gisele,Ansloan +Giselle,Anslow +Gita,Ansoategui +Giuseppe,Anson +Giuseppina,Anspach +Gladis,Anspaugh +Glady,Anstead +Gladys,Anstett +Glayds,Anstey +Glen,Anstine +Glenda,Antal +Glendora,Antao +Glenn,Antaya +Glenn,Antczak +Glenna,Anteby +Glennie,Antee +Glennis,Antell +Glinda,Antenor +Gloria,Antenucci +Glory,Anter +Glynda,Antes +Glynis,Anthes +Golda,Anthis +Golden,Anthon +Goldie,Anthony +Gonzalo,Antich +Gordon,Antignani +Grace,Antigua +Gracia,Antila +Gracie,Antill +Graciela,Antilla +Grady,Antillon +Graham,Antinarelli +Graig,Antinore +Grant,Antinoro +Granville,Antione +Grayce,Antis +Grazyna,Antista +Greg,Antkowiak +Gregg,Antle +Gregoria,Antley +Gregorio,Antman +Gregory,Antoine +Gregory,Antolak +Greta,Antolik +Gretchen,Antolin +Gretta,Antolini +Gricelda,Antolos +Grisel,Anton +Griselda,Antona +Grover,Antonacci +Guadalupe,Antonaccio +Guadalupe,Antonakos +Gudrun,Antone +Guillermina,Antonelli +Guillermo,Antonellis +Gus,Antonello +Gussie,Antonetti +Gustavo,Antonetty +Guy,Antonia +Gwen,Antoniak +Gwenda,Antonich +Gwendolyn,Antoniewicz +Gwenn,Antonini +Gwyn,Antonio +Gwyneth,Antoniotti +Ha,Antoniou +Hae,Antonis +Hai,Antoniuk +Hailey,Antonopoulos +Hal,Antonovich +Haley,Antonsen +Halina,Antonson +Halley,Antonucci +Hallie,Antony +Han,Antos +Hana,Antosh +Hang,Antrican +Hanh,Antrikin +Hank,Antrim +Hanna,Antrobus +Hannah,Antronica +Hannelore,Anttila +Hans,Antu +Harlan,Antuna +Harland,Antunes +Harley,Antunez +Harmony,Antwi +Harold,Antwine +Harold,Anwar +Harriet,Anway +Harriett,Anyan +Harriette,Anzai +Harris,Anzaldo +Harrison,Anzaldua +Harry,Anzalone +Harvey,Anzideo +Hassan,Anzora +Hassie,Anzualda +Hattie,Anzures +Haydee,Ao +Hayden,Aoay +Hayley,Aoki +Haywood,Aono +Hazel,Apa +Heath,Apadaca +Heather,Apadoca +Hector,Apaez +Hedwig,Apalategui +Hedy,Apana +Hee,Aparicio +Heide,Aparo +Heidi,Ape +Heidy,Apel +Heike,Apela +Helaine,Apelian +Helen,Aper +Helena,Aperges +Helene,Apfel +Helga,Apgar +Hellen,Apicella +Henrietta,Apilado +Henriette,Apker +Henry,Apkin +Henry,Apking +Herb,Apland +Herbert,Apley +Heriberto,Aplin +Herlinda,Apling +Herma,Aplington +Herman,Apo +Hermelinda,Apodaca +Hermila,Apodace +Hermina,Apodoca +Hermine,Apolinar +Herminia,Apolito +Herschel,Apollo +Hershel,Apolo +Herta,Aponta +Hertha,Aponte +Hester,Apostal +Hettie,Apostol +Hiedi,App +Hien,Appana +Hilaria,Appel +Hilario,Appelbaum +Hilary,Appelgate +Hilda,Appelgren +Hilde,Appeling +Hildegard,Appell +Hildegarde,Appello +Hildred,Appelman +Hillary,Appelt +Hilma,Appenzeller +Hilton,Apperson +Hipolito,Appert +Hiram,Appia +Hiroko,Appiah +Hisako,Appl +Hoa,Apple +Hobert,Applebaum +Holley,Applebee +Holli,Appleberry +Hollie,Applebury +Hollis,Appleby +Hollis,Applegarth +Holly,Applegate +Homer,Appleman +Honey,Applen +Hong,Appleton +Hong,Applewhaite +Hope,Applewhite +Horace,Appleyard +Horacio,Applin +Hortencia,Appling +Hortense,Applonie +Hortensia,Appolonia +Hosea,Aprea +Houston,Apresa +Howard,Aprigliano +Hoyt,April +Hsiu,Aprill +Hubert,Apruzzese +Hue,Apsey +Huey,Apshire +Hugh,Apt +Hugo,Apthorpe +Hui,Apuzzi +Hulda,Apuzzo +Humberto,Apyuan +Hung,Aquas +Hunter,Aquero +Huong,Aquil +Hwa,Aquilar +Hyacinth,Aquilera +Hye,Aquilina +Hyman,Aquilino +Hyo,Aquino +Hyon,Aquirre +Hyun,Ar +Ian,Arab +Ida,Arabajian +Idalia,Arabia +Idell,Arabian +Idella,Arabie +Iesha,Aracena +Ignacia,Aradanas +Ignacio,Aragaki +Ike,Aragan +Ila,Aragao +Ilana,Aragon +Ilda,Aragones +Ileana,Aragoni +Ileen,Aragundi +Ilene,Aragus +Iliana,Arai +Illa,Araiza +Ilona,Arakaki +Ilse,Arakawa +Iluminada,Araki +Ima,Araldi +Imelda,Aramboles +Imogene,Arambuia +In,Arambula +Ina,Arambulo +India,Aramini +Indira,Aran +Inell,Arana +Ines,Aranas +Inez,Arancibia +Inga,Arand +Inge,Aranda +Ingeborg,Araneo +Inger,Arango +Ingrid,Aranjo +Inocencia,Arano +Iola,Arant +Iona,Araque +Ione,Arashiro +Ira,Arata +Ira,Arato +Iraida,Arau +Irena,Araujo +Irene,Arauz +Irina,Arave +Iris,Aravjo +Irish,Araya +Irma,Arb +Irmgard,Arballo +Irvin,Arbaugh +Irving,Arbeiter +Irwin,Arbertha +Isa,Arbetman +Isaac,Arbizo +Isabel,Arbo +Isabell,Arbogast +Isabella,Arbogust +Isabelle,Arboleda +Isadora,Arbolida +Isaiah,Arbon +Isaias,Arbour +Isaura,Arbry +Isela,Arbucci +Isiah,Arbuckle +Isidra,Arbuthnot +Isidro,Arca +Isis,Arcadipane +Ismael,Arcand +Isobel,Arcangel +Israel,Arcano +Isreal,Arcaro +Issac,Arcaute +Iva,Arce +Ivan,Arcea +Ivana,Arcega +Ivelisse,Arcement +Ivette,Arceneaux +Ivey,Arceo +Ivonne,Arch +Ivory,Archacki +Ivory,Archambault +Ivy,Archambeau +Izetta,Archambeault +Izola,Archangel +Ja,Archbell +Jacalyn,Archbold +Jacelyn,Archdale +Jacinda,Archer +Jacinta,Archey +Jacinto,Archibald +Jack,Archibeque +Jack,Archibold +Jackeline,Archie +Jackelyn,Archila +Jacki,Archilla +Jackie,Archiopoli +Jackie,Archuleta +Jacklyn,Archuletta +Jackqueline,Archut +Jackson,Arcia +Jaclyn,Arciba +Jacob,Arcieri +Jacqualine,Arciga +Jacque,Arcila +Jacquelin,Arcilla +Jacqueline,Arciniega +Jacquelyn,Arcino +Jacquelyne,Arciola +Jacquelynn,Arcizo +Jacques,Arcoraci +Jacquetta,Arcos +Jacqui,Arcudi +Jacquie,Arcuo +Jacquiline,Arcuri +Jacquline,Ard +Jacqulyn,Ardaly +Jada,Ardan +Jade,Ardd +Jadwiga,Ardelean +Jae,Arden +Jae,Ardeneaux +Jaime,Ardery +Jaime,Ardinger +Jaimee,Ardion +Jaimie,Ardis +Jake,Ardito +Jaleesa,Ardizone +Jalisa,Ardizzone +Jama,Ardman +Jamaal,Ardner +Jamal,Ardoin +Jamar,Ardolino +Jame,Ardon +Jame,Ardrey +Jamee,Ardry +Jamel,Ards +James,Arduini +James,Area +Jamey,Areas +Jamey,Arebalo +Jami,Arebela +Jamie,Arechiga +Jamie,Aredondo +Jamika,Arehano +Jamila,Arehart +Jamison,Areias +Jammie,Areizaga +Jan,Arel +Jan,Arellanes +Jana,Arellano +Janae,Arelleano +Janay,Arena +Jane,Arenales +Janean,Arenas +Janee,Arenburg +Janeen,Arend +Janel,Arendale +Janell,Arendall +Janella,Arendash +Janelle,Arender +Janene,Arends +Janessa,Arendsee +Janet,Arendt +Janeth,Arendz +Janett,Arenivar +Janetta,Arenivas +Janette,Arenos +Janey,Arens +Jani,Arenson +Janice,Arenstam +Janie,Arent +Janiece,Arentz +Janina,Arenz +Janine,Areola +Janis,Ares +Janise,Aresco +Janita,Arevalo +Jann,Arevalos +Janna,Arey +Jannet,Arflack +Jannette,Arfman +Jannie,Argabright +January,Argall +Janyce,Arganbright +Jaqueline,Argandona +Jaquelyn,Argenal +Jared,Argenbright +Jarod,Argenti +Jarred,Argentieri +Jarrett,Argento +Jarrod,Argenziano +Jarvis,Argetsinger +Jasmin,Argie +Jasmine,Argiro +Jason,Argo +Jason,Argote +Jasper,Argrave +Jaunita,Argro +Javier,Argrow +Jay,Argubright +Jay,Argudin +Jaye,Argudo +Jayme,Argue +Jaymie,Arguelles +Jayna,Arguellez +Jayne,Arguello +Jayson,Argueta +Jazmin,Arguijo +Jazmine,Arguilez +Jc,Arguillo +Jean,Arguin +Jean,Argulewicz +Jeana,Argumedo +Jeane,Argust +Jeanelle,Argyle +Jeanene,Arhart +Jeanett,Arhelger +Jeanetta,Ariail +Jeanette,Ariano +Jeanice,Arias +Jeanie,Ariaza +Jeanine,Aricas +Jeanmarie,Arichabala +Jeanna,Arico +Jeanne,Aridas +Jeannetta,Arie +Jeannette,Ariel +Jeannie,Aries +Jeannine,Arietta +Jed,Arif +Jeff,Arigo +Jefferey,Arildsen +Jefferson,Arimas +Jeffery,Arimoto +Jeffie,Aring +Jeffrey,Arington +Jeffrey,Ariola +Jeffry,Aris +Jen,Arisa +Jena,Arismendez +Jenae,Arispe +Jene,Arista +Jenee,Aristide +Jenell,Aristizabal +Jenelle,Arisumi +Jenette,Arita +Jeneva,Ariyoshi +Jeni,Ariza +Jenice,Arizaga +Jenifer,Arizmendi +Jeniffer,Arizola +Jenine,Arizzi +Jenise,Arjes +Jenna,Arjona +Jennefer,Arjune +Jennell,Arkadie +Jennette,Arkell +Jenni,Arkema +Jennie,Arkenberg +Jennifer,Arkin +Jenniffer,Arking +Jennine,Arkins +Jenny,Arko +Jerald,Arkontaky +Jeraldine,Arlan +Jeramy,Arledge +Jere,Arlen +Jeremiah,Arleth +Jeremy,Arlia +Jeremy,Arline +Jeri,Arlinghaus +Jerica,Arlington +Jerilyn,Arlotta +Jerlene,Arlt +Jermaine,Arm +Jerold,Armacost +Jerome,Armada +Jeromy,Armagost +Jerrell,Arman +Jerri,Armand +Jerrica,Armando +Jerrie,Armant +Jerrod,Armantrout +Jerrold,Armas +Jerry,Armato +Jerry,Armbrester +Jesenia,Armbrister +Jesica,Armbrust +Jess,Armbruster +Jesse,Armel +Jesse,Armeli +Jessenia,Armelin +Jessi,Armen +Jessia,Armendarez +Jessica,Armendariz +Jessie,Armengol +Jessie,Arment +Jessika,Armenta +Jestine,Armenteros +Jesus,Armento +Jesus,Armentor +Jesusa,Armentrout +Jesusita,Armer +Jetta,Armes +Jettie,Armesto +Jewel,Armfield +Jewel,Armiger +Jewell,Armijo +Jewell,Armijos +Ji,Armillei +Jill,Armintrout +Jillian,Armiso +Jim,Armistead +Jimmie,Armitage +Jimmie,Armlin +Jimmy,Armocida +Jimmy,Armold +Jin,Armon +Jina,Armond +Jinny,Armor +Jo,Armour +Joan,Armout +Joan,Arms +Joana,Armson +Joane,Armstead +Joanie,Armster +Joann,Armstong +Joanna,Armstrong +Joanne,Armwood +Joannie,Army +Joaquin,Arn +Joaquina,Arnaldo +Jocelyn,Arnall +Jodee,Arnao +Jodi,Arnau +Jodie,Arnaud +Jody,Arnaudet +Jody,Arndell +Joe,Arndorfer +Joe,Arndt +Joeann,Arne +Joel,Arneberg +Joel,Arneecher +Joella,Arnell +Joelle,Arner +Joellen,Arnerich +Joesph,Arnesen +Joetta,Arneson +Joette,Arnet +Joey,Arnett +Joey,Arnette +Johana,Arney +Johanna,Arnhart +Johanne,Arnhold +John,Arnholt +John,Arnholtz +Johna,Arning +Johnathan,Arnio +Johnathon,Arniotes +Johnetta,Arnitz +Johnette,Arnn +Johnie,Arno +Johnie,Arnold +Johnna,Arnoldi +Johnnie,Arnoldy +Johnnie,Arnone +Johnny,Arnot +Johnny,Arnott +Johnsie,Arnoux +Johnson,Arnow +Joi,Arns +Joie,Arnsberger +Jolanda,Arnspiger +Joleen,Arnst +Jolene,Arnstein +Jolie,Arnsworth +Joline,Arnt +Jolyn,Arntson +Jolynn,Arntt +Jon,Arntz +Jon,Arntzen +Jona,Arnwine +Jonah,Arnzen +Jonas,Aro +Jonathan,Aroca +Jonathon,Arocha +Jone,Aroche +Jonell,Arocho +Jonelle,Arollo +Jong,Aromin +Joni,Aron +Jonie,Arone +Jonna,Aronhalt +Jonnie,Aronica +Jordan,Aronoff +Jordan,Aronov +Jordon,Aronow +Jorge,Aronowitz +Jose,Arons +Jose,Aronson +Josef,Aronstein +Josefa,Arora +Josefina,Arosemena +Josefine,Arostegui +Joselyn,Arouri +Joseph,Aroyo +Joseph,Arp +Josephina,Arpin +Josephine,Arpino +Josette,Arps +Josh,Arquelles +Joshua,Arquero +Joshua,Arqueta +Josiah,Arquette +Josie,Arquitt +Joslyn,Arra +Jospeh,Arraiol +Josphine,Arrambide +Josue,Arrance +Jovan,Arrand +Jovita,Arrant +Joy,Arrants +Joya,Arras +Joyce,Arrasmith +Joycelyn,Arre +Joye,Arreaga +Juan,Arredla +Juan,Arredondo +Juana,Arreguin +Juanita,Arrellano +Jude,Arrellin +Jude,Arrendell +Judi,Arrendondo +Judie,Arreola +Judith,Arrequin +Judson,Arrey +Judy,Arrez +Jule,Arrezola +Julee,Arriaga +Julene,Arriano +Jules,Arriaza +Juli,Arriazola +Julia,Arribas +Julian,Arrick +Julian,Arrieta +Juliana,Arrigo +Juliane,Arrigone +Juliann,Arrindel +Julianna,Arrington +Julianne,Arriola +Julie,Arris +Julieann,Arrisola +Julienne,Arrison +Juliet,Arritola +Julieta,Arrizaga +Julietta,Arrizola +Juliette,Arrocha +Julio,Arrocho +Julio,Arrojo +Julissa,Arroliga +Julius,Arrollo +June,Arron +Jung,Arrospide +Junie,Arrott +Junior,Arrow +Junita,Arrowood +Junko,Arrowsmith +Justa,Arroyano +Justin,Arroyd +Justin,Arroyo +Justina,Arroyos +Justine,Arruda +Jutta,Arsenault +Ka,Arseneau +Kacey,Arseneault +Kaci,Arsham +Kacie,Arslan +Kacy,Arslanian +Kai,Art +Kaila,Artale +Kaitlin,Artalejo +Kaitlyn,Arteaga +Kala,Artega +Kaleigh,Arter +Kaley,Arterberry +Kali,Arterburn +Kallie,Arterbury +Kalyn,Arters +Kam,Artez +Kamala,Arthun +Kami,Arthur +Kamilah,Arthurs +Kandace,Artiaga +Kandi,Artibee +Kandice,Artice +Kandis,Arties +Kandra,Artiga +Kandy,Artiles +Kanesha,Artinger +Kanisha,Artinian +Kara,Artis +Karan,Artison +Kareem,Artist +Kareen,Artley +Karen,Artman +Karena,Artmann +Karey,Artola +Kari,Arton +Karie,Artrip +Karima,Artry +Karin,Arts +Karina,Arturo +Karine,Artus +Karisa,Artuso +Karissa,Artz +Karl,Artzer +Karl,Aruiso +Karla,Aruizu +Karleen,Arujo +Karlene,Arunachalam +Karly,Arundel +Karlyn,Arva +Karma,Arvan +Karmen,Arvanitis +Karol,Arvay +Karole,Arvayo +Karoline,Arvelo +Karolyn,Arvesen +Karon,Arvez +Karren,Arvidson +Karri,Arvie +Karrie,Arview +Karry,Arvin +Kary,Arviso +Karyl,Arvizo +Karyn,Arvizu +Kasandra,Arwood +Kasey,Ary +Kasey,Arya +Kasha,Arzabala +Kasi,Arzaga +Kasie,Arzate +Kassandra,Arzilli +Kassie,Arzo +Kate,Arzola +Katelin,Arzt +Katelyn,Arzu +Katelynn,Asa +Katerine,Asad +Kathaleen,Asaeli +Katharina,Asai +Katharine,Asakura +Katharyn,Asal +Kathe,Asam +Katheleen,Asamoah +Katherin,Asano +Katherina,Asante +Katherine,Asar +Kathern,Asaro +Katheryn,Asato +Kathey,Asay +Kathi,Asbell +Kathie,Asberry +Kathleen,Asbill +Kathlene,Asbridge +Kathline,Asbury +Kathlyn,Asby +Kathrin,Ascencio +Kathrine,Ascensio +Kathryn,Ascenzo +Kathryne,Asch +Kathy,Aschan +Kathyrn,Aschbacher +Kati,Ascheman +Katia,Aschenbach +Katie,Aschenbrener +Katina,Aschenbrenner +Katlyn,Ascher +Katrice,Aschim +Katrina,Aschmann +Kattie,Aschoff +Katy,Ascol +Kay,Ascolese +Kayce,Asebedo +Kaycee,Asel +Kaye,Aselage +Kayla,Aseltine +Kaylee,Asen +Kayleen,Asencio +Kayleigh,Aseng +Kaylene,Asenjo +Kazuko,Asevedo +Kecia,Asfour +Keeley,Ash +Keely,Ashaf +Keena,Ashalintubbi +Keenan,Ashauer +Keesha,Ashbach +Keiko,Ashbacher +Keila,Ashbaugh +Keira,Ashbourne +Keisha,Ashbrook +Keith,Ashburn +Keith,Ashby +Keitha,Ashcraft +Keli,Ashcroft +Kelle,Ashdown +Kellee,Ashe +Kelley,Ashely +Kelley,Ashenfelter +Kelli,Asher +Kellie,Ashfield +Kelly,Ashford +Kelly,Ashing +Kellye,Ashkettle +Kelsey,Ashland +Kelsi,Ashley +Kelsie,Ashlin +Kelvin,Ashline +Kemberly,Ashlock +Ken,Ashly +Kena,Ashman +Kenda,Ashmead +Kendal,Ashmen +Kendall,Ashmore +Kendall,Ashner +Kendra,Ashpole +Kendrick,Ashraf +Keneth,Ashton +Kenia,Ashurst +Kenisha,Ashwell +Kenna,Ashwood +Kenneth,Ashworth +Kenneth,Asiedu +Kennith,Asiello +Kenny,Asif +Kent,Ask +Kenton,Askam +Kenya,Askari +Kenyatta,Aske +Kenyetta,Askegren +Kera,Asken +Keren,Askew +Keri,Askey +Kermit,Askia +Kerri,Askiew +Kerrie,Askin +Kerry,Askins +Kerry,Askland +Kerstin,Askren +Kesha,Askvig +Keshia,Askwith +Keturah,Aslam +Keva,Aslanian +Keven,Asleson +Kevin,Aslett +Kevin,Asley +Khadijah,Aslin +Khalilah,Aslinger +Kia,Asma +Kiana,Asman +Kiara,Asmar +Kiera,Asmus +Kiersten,Asmussen +Kiesha,Asner +Kieth,Asnicar +Kiley,Asp +Kim,Aspacio +Kim,Aspden +Kimber,Aspegren +Kimberely,Aspell +Kimberlee,Aspen +Kimberley,Asper +Kimberli,Asperheim +Kimberlie,Aspinall +Kimberly,Aspinwall +Kimbery,Aspley +Kimbra,Asplin +Kimi,Asplund +Kimiko,Aspri +Kina,Asquith +Kindra,Asrari +King,Assad +Kip,Assael +Kira,Assaf +Kirby,Assalone +Kirby,Assante +Kirk,Asselin +Kirsten,Asselmeier +Kirstie,Asselta +Kirstin,Assenmacher +Kisha,Assing +Kit,Assis +Kittie,Assum +Kitty,Ast +Kiyoko,Asta +Kizzie,Astacio +Kizzy,Astafan +Klara,Astarita +Korey,Aste +Kori,Asters +Kortney,Astillero +Kory,Astin +Kourtney,Astle +Kraig,Astley +Kris,Astol +Kris,Astolfi +Krishna,Aston +Krissy,Astor +Krista,Astorga +Kristal,Astorino +Kristan,Astrella +Kristeen,Astrologo +Kristel,Astrup +Kristen,Astry +Kristi,Astudillo +Kristian,Asturias +Kristie,Astwood +Kristin,Asuncion +Kristina,Aswegan +Kristine,Atala +Kristle,Atallah +Kristofer,Atamanczyk +Kristopher,Atamian +Kristy,Atanacio +Kristyn,Atay +Krysta,Atcher +Krystal,Atcheson +Krysten,Atchinson +Krystin,Atchison +Krystina,Atchity +Krystle,Atchley +Krystyna,Atcitty +Kum,Aten +Kurt,Atencio +Kurtis,Atengco +Kyla,Ater +Kyle,Ates +Kyle,Atha +Kylee,Athalone +Kylie,Athan +Kym,Athanasiou +Kymberly,Athans +Kyoko,Athas +Kyong,Athay +Kyra,Athayde +Kyung,Athearn +Lacey,Athens +Lachelle,Atherholt +Laci,Atherley +Lacie,Atherton +Lacresha,Athey +Lacy,Athmann +Lacy,Athy +Ladawn,Atienza +Ladonna,Atilano +Lady,Atiles +Lael,Atiyeh +Lahoma,Atkerson +Lai,Atkeson +Laila,Atkin +Laine,Atkins +Lajuana,Atkinson +Lakeesha,Atkison +Lakeisha,Atkisson +Lakendra,Atlas +Lakenya,Atleh +Lakesha,Atma +Lakeshia,Atmore +Lakia,Atnip +Lakiesha,Atoe +Lakisha,Aton +Lakita,Ator +Lala,Atta +Lamar,Attal +Lamonica,Attanasio +Lamont,Attard +Lan,Attaway +Lana,Atteberry +Lance,Attebery +Landon,Atteburg +Lane,Atterberry +Lane,Atterbury +Lanell,Atterson +Lanelle,Atthowe +Lanette,Attia +Lang,Attianese +Lani,Attig +Lanie,Attilio +Lanita,Attinger +Lannie,Attkisson +Lanny,Attles +Lanora,Attleson +Laquanda,Attridge +Laquita,Attwell +Lara,Attwood +Larae,Atwater +Laraine,Atwell +Laree,Atwill +Larhonda,Atwood +Larisa,Atzhorn +Larissa,Atzinger +Larita,Au +Laronda,Auala +Larraine,Aube +Larry,Aubel +Larry,Auber +Larue,Auberry +Lasandra,Aubert +Lashanda,Aubertine +Lashandra,Aubin +Lashaun,Auble +Lashaunda,Aubrecht +Lashawn,Aubrey +Lashawna,Aubry +Lashawnda,Aubuchon +Lashay,Aubut +Lashell,Auces +Lashon,Auch +Lashonda,Auchmoody +Lashunda,Auck +Lasonya,Auckerman +Latanya,Auckley +Latarsha,Auclair +Latasha,Aucoin +Latashia,Aucter +Latesha,Aud +Latia,Audain +Laticia,Audas +Latina,Audelhuk +Latisha,Audet +Latonia,Audette +Latonya,Audi +Latoria,Audia +Latosha,Audibert +Latoya,Audie +Latoyia,Audirsch +Latrice,Audrey +Latricia,Auduong +Latrina,Aue +Latrisha,Auel +Launa,Auer +Laura,Auerbach +Lauralee,Auerswald +Lauran,Aufderheide +Laure,Auffrey +Laureen,Aufiero +Laurel,Auge +Lauren,Augello +Lauren,Augenstein +Laurena,Auger +Laurence,Augeri +Laurence,Aughe +Laurene,Aughenbaugh +Lauretta,Aughtman +Laurette,Aughtry +Lauri,Augle +Laurice,Augliano +Laurie,Augsburger +Laurinda,Augspurger +Laurine,August +Lauryn,Augusta +Lavada,Augustave +Lavelle,Auguste +Lavenia,Augustin +Lavera,Augustine +Lavern,Augusto +Lavern,Augustson +Laverna,Augustus +Laverne,Augustyn +Laverne,Augustyniak +Laveta,Auila +Lavette,Auiles +Lavina,Aujla +Lavinia,Aukamp +Lavon,Auker +Lavona,Aukerman +Lavonda,Aukes +Lavone,Aul +Lavonia,Aulabaugh +Lavonna,Aulbach +Lavonne,Auld +Lawana,Aulder +Lawanda,Auldridge +Lawanna,Aulds +Lawerence,Auler +Lawrence,Auletta +Lawrence,Aull +Layla,Auls +Layne,Ault +Lazaro,Aultman +Le,Aultz +Lea,Auman +Leah,Aumann +Lean,Aumavae +Leana,Aumen +Leandra,Aumend +Leandro,Aument +Leann,Aumich +Leanna,Aumick +Leanne,Aumiller +Leanora,Aun +Leatha,Auna +Leatrice,Aune +Lecia,Aungst +Leda,Aunkst +Lee,Aupperle +Lee,Auprey +Leeann,Aurand +Leeanna,Aurelia +Leeanne,Aurelio +Leena,Aures +Leesa,Aurges +Leia,Auricchio +Leida,Aurich +Leif,Auringer +Leigh,Aurora +Leigh,Aurrichio +Leigha,Aus +Leighann,Ausbrooks +Leila,Ausburn +Leilani,Ausby +Leisa,Ausdemore +Leisha,Ausherman +Lekisha,Ausiello +Lela,Auslam +Lelah,Ausland +Leland,Auslander +Lelia,Ausley +Lemuel,Ausman +Len,Ausmus +Lena,Aust +Lenard,Austad +Lenita,Austell +Lenna,Austen +Lennie,Auster +Lenny,Austerberry +Lenora,Austgen +Lenore,Austill +Leo,Austin +Leo,Austine +Leola,Austino +Leoma,Auston +Leon,Austria +Leon,Autaubo +Leona,Auten +Leonard,Auter +Leonarda,Auteri +Leonardo,Autery +Leone,Authement +Leonel,Auther +Leonia,Authur +Leonida,Autin +Leonie,Autio +Leonila,Autman +Leonor,Autobee +Leonora,Auton +Leonore,Autovino +Leontine,Autrano +Leopoldo,Autrey +Leora,Autry +Leota,Autullo +Lera,Auvil +Leroy,Auwaerter +Les,Auwarter +Lesa,Auxier +Lesha,Auxilien +Lesia,Auyer +Leslee,Auyeung +Lesley,Auyon +Lesley,Auyong +Lesli,Auzat +Leslie,Auzenne +Leslie,Auzston +Lessie,Avala +Lester,Avallone +Lester,Avalos +Leta,Avance +Letha,Avancena +Leticia,Avans +Letisha,Avansino +Letitia,Avant +Lettie,Avants +Letty,Avanzato +Levi,Avarbuch +Lewis,Avary +Lewis,Ave +Lexie,Aveado +Lezlie,Avelar +Li,Aveles +Lia,Aveline +Liana,Avelino +Liane,Avella +Lianne,Avellaneda +Libbie,Avellano +Libby,Avellar +Liberty,Avellino +Librada,Avello +Lida,Avena +Lidia,Avendano +Lien,Aveni +Lieselotte,Avenia +Ligia,Avenoso +Lila,Avent +Lili,Aver +Lilia,Avera +Lilian,Averbach +Liliana,Averbeck +Lilla,Averett +Lilli,Averette +Lillia,Averhart +Lilliam,Averill +Lillian,Averitt +Lilliana,Averitte +Lillie,Avers +Lilly,Aversa +Lily,Aversano +Lin,Avery +Lina,Averyt +Lincoln,Avetisyan +Linda,Avey +Lindsay,Avie +Lindsay,Avila +Lindsey,Avilar +Lindsey,Aviles +Lindsy,Avilez +Lindy,Avilla +Linette,Avina +Ling,Avinger +Linh,Avino +Linn,Avirett +Linnea,Avis +Linnie,Avison +Lino,Avita +Linsey,Avitabile +Linwood,Avitia +Lionel,Avner +Lisa,Avola +Lisabeth,Avolio +Lisandra,Avon +Lisbeth,Avona +Lise,Avrett +Lisette,Avril +Lisha,Aw +Lissa,Awad +Lissette,Awada +Lita,Awai +Livia,Awalt +Liz,Awbrey +Liza,Awe +Lizabeth,Awender +Lizbeth,Awkard +Lizeth,Awkward +Lizette,Awong +Lizzette,Awtrey +Lizzie,Awtry +Lloyd,Awyie +Loan,Ax +Logan,Axe +Logan,Axel +Loida,Axelrad +Lois,Axelrod +Loise,Axelsen +Lola,Axelson +Lolita,Axford +Loma,Axley +Lon,Axline +Lona,Axman +Londa,Axon +Long,Axsom +Loni,Axson +Lonna,Axt +Lonnie,Axtell +Lonnie,Axthelm +Lonny,Axtman +Lora,Axton +Loraine,Ayaia +Loralee,Ayala +Lore,Ayalla +Lorean,Ayars +Loree,Ayarza +Loreen,Aybar +Lorelei,Aycock +Loren,Aycox +Loren,Aydelott +Lorena,Aydin +Lorene,Aydlett +Lorenza,Aydt +Lorenzo,Aye +Loreta,Ayele +Loretta,Ayer +Lorette,Ayers +Lori,Ayersman +Loria,Ayhens +Loriann,Aykroid +Lorie,Ayles +Lorilee,Aylesworth +Lorina,Ayling +Lorinda,Aylock +Lorine,Aylor +Loris,Aylsworth +Lorita,Aylward +Lorna,Aymar +Lorraine,Aymond +Lorretta,Aynes +Lorri,Ayo +Lorriane,Ayola +Lorrie,Ayon +Lorrine,Ayoob +Lory,Ayotte +Lottie,Ayoub +Lou,Ayre +Lou,Ayres +Louann,Ayscue +Louanne,Aysien +Louella,Aytes +Louetta,Ayudan +Louie,Ayuso +Louie,Ayyad +Louis,Azad +Louis,Azahar +Louisa,Azapinto +Louise,Azar +Loura,Azatyan +Lourdes,Azbell +Lourie,Azbill +Louvenia,Azcona +Love,Azebedo +Lovella,Azeem +Lovetta,Azen +Lovie,Azer +Lowell,Azevedo +Loyce,Azhocar +Loyd,Azim +Lu,Azimi +Luana,Aziz +Luann,Azor +Luanna,Azore +Luanne,Azotea +Luba,Azoulay +Lucas,Azua +Luci,Azulay +Lucia,Azuma +Luciana,Azure +Luciano,Azzano +Lucie,Azzara +Lucien,Azzarella +Lucienne,Azzarito +Lucila,Azzaro +Lucile,Azznara +Lucilla,Azzopardi +Lucille,Ba +Lucina,Baab +Lucinda,Baack +Lucio,Baade +Lucius,Baadsgaard +Lucrecia,Baar +Lucretia,Baars +Lucy,Baarts +Ludie,Baas +Ludivina,Baatz +Lue,Bab +Luella,Baba +Luetta,Babat +Luigi,Babauta +Luis,Babb +Luis,Babbel +Luisa,Babbin +Luise,Babbish +Luke,Babbit +Lula,Babbitt +Lulu,Babbs +Luna,Babcock +Lupe,Babe +Lupe,Babecki +Lupita,Babel +Lura,Babena +Lurlene,Baber +Lurline,Babers +Luther,Babeu +Luvenia,Babey +Luz,Babiarz +Lyda,Babic +Lydia,Babich +Lyla,Babick +Lyle,Babicke +Lyman,Babicz +Lyn,Babikian +Lynda,Babilon +Lyndia,Babilonia +Lyndon,Babin +Lyndsay,Babine +Lyndsey,Babineau +Lynell,Babineaux +Lynelle,Babington +Lynetta,Babino +Lynette,Babinski +Lynn,Babione +Lynn,Babiracki +Lynna,Babish +Lynne,Babitsch +Lynnette,Babjeck +Lynsey,Bablak +Lynwood,Bable +Ma,Babonis +Mabel,Babrow +Mabelle,Babson +Mable,Babst +Mac,Babu +Machelle,Babula +Macie,Babyak +Mack,Baca +Mackenzie,Bacak +Macy,Bacarella +Madalene,Bacayo +Madaline,Bacca +Madalyn,Baccam +Maddie,Baccari +Madelaine,Bacchi +Madeleine,Bacchus +Madelene,Bacco +Madeline,Baccouche +Madelyn,Baccus +Madge,Bacerra +Madie,Bach +Madison,Bacha +Madlyn,Bachan +Madonna,Bachand +Mae,Bachar +Maegan,Bachas +Mafalda,Bache +Magali,Bachelder +Magaly,Bachelor +Magan,Bacher +Magaret,Bachert +Magda,Bachhuber +Magdalen,Bachicha +Magdalena,Bachinski +Magdalene,Bachleda +Magen,Bachler +Maggie,Bachman +Magnolia,Bachmann +Mahalia,Bachmeier +Mai,Bachmeyer +Maia,Bachner +Maida,Bacho +Maile,Bachor +Maira,Bachorski +Maire,Bachrach +Maisha,Bachrodt +Maisie,Bachta +Major,Bachtel +Majorie,Bachtell +Makeda,Bachtold +Malcolm,Bachus +Malcom,Bacich +Malena,Bacigalupi +Malia,Bacigalupo +Malik,Bacik +Malika,Bacino +Malinda,Bacio +Malisa,Back +Malissa,Backbone +Malka,Backe +Mallie,Backen +Mallory,Backenstose +Malorie,Backer +Malvina,Backers +Mamie,Backes +Mammie,Backey +Man,Backfisch +Man,Backhaus +Mana,Backhuus +Manda,Backlund +Mandi,Backman +Mandie,Backmon +Mandy,Backous +Manie,Backstrom +Manual,Backues +Manuel,Backus +Manuela,Bacman +Many,Bacolor +Mao,Bacon +Maple,Bacone +Mara,Bacorn +Maragaret,Bacot +Maragret,Bacote +Maranda,Baculpo +Marc,Bacurin +Marcel,Bacus +Marcela,Bacy +Marcelene,Baczewski +Marcelina,Bad +Marceline,Badagliacca +Marcelino,Badal +Marcell,Badalamenti +Marcella,Badame +Marcelle,Badami +Marcellus,Badamo +Marcelo,Badanguio +Marcene,Badasci +Marchelle,Baddeley +Marci,Badder +Marcia,Badders +Marcie,Baddley +Marco,Baddour +Marcos,Bade +Marcus,Badeau +Marcy,Badeaux +Mardell,Baden +Maren,Badena +Marg,Badenoch +Margaret,Bader +Margareta,Badertscher +Margarete,Badey +Margarett,Badger +Margaretta,Badgero +Margarette,Badget +Margarita,Badgett +Margarite,Badgley +Margarito,Badia +Margart,Badie +Marge,Badilla +Margene,Badillo +Margeret,Badini +Margert,Badlam +Margery,Badley +Marget,Badman +Margherita,Bado +Margie,Badolato +Margit,Badon +Margo,Badoni +Margorie,Badour +Margot,Badruddin +Margret,Badua +Margrett,Badura +Marguerita,Bady +Marguerite,Badzinski +Margurite,Bae +Margy,Baehr +Marhta,Baek +Mari,Baell +Maria,Baena +Maria,Baenziger +Mariah,Baer +Mariam,Baerg +Marian,Baerga +Mariana,Baeringer +Marianela,Baerlocher +Mariann,Baerman +Marianna,Baese +Marianne,Baeskens +Mariano,Baessler +Maribel,Baetz +Maribeth,Baez +Marica,Baeza +Maricela,Baff +Maricruz,Baffa +Marie,Bafford +Mariel,Baffuto +Mariela,Bafia +Mariella,Bagan +Marielle,Bagaoisan +Marietta,Bagby +Mariette,Bagdasarian +Mariko,Bagdon +Marilee,Bagdonas +Marilou,Bageant +Marilu,Bagen +Marilyn,Bagent +Marilynn,Bagg +Marin,Bagge +Marina,Baggenstoss +Marinda,Bagger +Marine,Baggerly +Mario,Baggesen +Mario,Baggett +Marion,Baggette +Marion,Baggio +Maris,Baggott +Marisa,Baggs +Marisela,Baghdasarian +Marisha,Bagheri +Marisol,Bagi +Marissa,Baginski +Marita,Bagley +Maritza,Baglione +Marivel,Bagnall +Marjorie,Bagnaschi +Marjory,Bagnato +Mark,Bagne +Mark,Bagnell +Marketta,Bagner +Markita,Bagni +Markus,Bagnoli +Marla,Bagoyo +Marlana,Bagozzi +Marleen,Bagron +Marlen,Bagsby +Marlena,Bagshaw +Marlene,Bagu +Marlin,Bagwell +Marlin,Bagwill +Marline,Bah +Marlo,Bahadue +Marlon,Baham +Marlyn,Bahamonde +Marlys,Bahar +Marna,Bahde +Marni,Bahe +Marnie,Bahena +Marquerite,Baher +Marquetta,Bahl +Marquis,Bahler +Marquita,Bahlmann +Marquitta,Bahls +Marry,Bahm +Marsha,Bahn +Marshall,Bahner +Marshall,Bahnsen +Marta,Bahoora +Marth,Bahr +Martha,Bahri +Marti,Bahrke +Martin,Bahrmasel +Martin,Bahrs +Martina,Bahun +Martine,Bai +Marty,Baibak +Marty,Baich +Marva,Baichan +Marvel,Baier +Marvella,Baiera +Marvin,Baierl +Marvis,Baig +Marx,Baik +Mary,Bail +Mary,Bailado +Marya,Bailard +Maryalice,Baile +Maryam,Bailer +Maryann,Bailes +Maryanna,Bailey +Maryanne,Bailie +Marybelle,Bailiff +Marybeth,Bailin +Maryellen,Baillargeon +Maryetta,Baille +Maryjane,Baillet +Maryjo,Bailleu +Maryland,Baillie +Marylee,Baillio +Marylin,Bailly +Maryln,Bailon +Marylou,Bailony +Marylouise,Bailor +Marylyn,Baily +Marylynn,Baim +Maryrose,Baima +Masako,Bain +Mason,Bainard +Matha,Bainbridge +Mathew,Baine +Mathilda,Bainer +Mathilde,Baines +Matilda,Bainey +Matilde,Bains +Matt,Bainter +Matthew,Bainum +Matthew,Baio +Mattie,Baiotto +Maud,Bair +Maude,Bairam +Maudie,Baird +Maura,Baires +Maureen,Bairo +Maurice,Bairos +Maurice,Baisch +Mauricio,Baisden +Maurine,Baise +Maurita,Baisey +Mauro,Baish +Mavis,Baisley +Max,Baison +Maxie,Baisten +Maxima,Baites +Maximina,Baitg +Maximo,Baitner +Maxine,Baity +Maxwell,Baiz +May,Baiza +Maya,Baize +Maybell,Baizer +Maybelle,Baj +Maye,Bajaj +Mayme,Bajdas +Maynard,Bajek +Mayola,Bajko +Mayra,Bajorek +Mazie,Bajwa +Mckenzie,Bak +Mckinley,Baka +Meagan,Bakalar +Meaghan,Bakalars +Mechelle,Bakaler +Meda,Bakanauskas +Mee,Bake +Meg,Bakeley +Megan,Bakemeier +Meggan,Baken +Meghan,Baker +Meghann,Bakerville +Mei,Bakes +Mel,Bakewell +Melaine,Bakey +Melani,Bakhshian +Melania,Bakios +Melanie,Bakkala +Melany,Bakke +Melba,Bakken +Melda,Bakker +Melia,Bakko +Melida,Bakkum +Melina,Bakley +Melinda,Baklund +Melisa,Bakos +Melissa,Bakowski +Melissia,Bakr +Melita,Baksh +Mellie,Bakshi +Mellisa,Baksi +Mellissa,Bakst +Melodee,Bakula +Melodi,Bal +Melodie,Bala +Melody,Balaam +Melonie,Balaban +Melony,Baladejo +Melva,Balado +Melvin,Balafoutas +Melvin,Balagtas +Melvina,Balak +Melynda,Balancia +Mendy,Balandran +Mercedes,Balangatan +Mercedez,Balanoff +Mercy,Balas +Meredith,Balasa +Meri,Balasco +Merideth,Balash +Meridith,Balaski +Merilyn,Balasko +Merissa,Balassi +Merle,Balasubramani +Merle,Balay +Merlene,Balaz +Merlin,Balazs +Merlyn,Balbas +Merna,Balbi +Merri,Balbin +Merrie,Balboa +Merrilee,Balboni +Merrill,Balbontin +Merrill,Balbuena +Merry,Balcazar +Mertie,Balceiro +Mervin,Balcer +Meryl,Balcerzak +Meta,Balch +Mi,Balchunas +Mia,Balcitis +Mica,Balck +Micaela,Balckburn +Micah,Balckwell +Micah,Balcom +Micha,Balcomb +Michael,Balcorta +Michael,Balcos +Michaela,Bald +Michaele,Balda +Michal,Baldacchino +Michal,Baldacci +Michale,Baldasaro +Micheal,Baldassano +Micheal,Baldassara +Michel,Baldassare +Michel,Baldassarre +Michele,Baldauf +Michelina,Balde +Micheline,Baldearena +Michell,Baldelli +Michelle,Balden +Michiko,Baldenegro +Mickey,Balder +Mickey,Balderama +Micki,Balderas +Mickie,Balderrama +Miesha,Balderree +Migdalia,Balderson +Mignon,Balderston +Miguel,Baldi +Miguelina,Balding +Mika,Baldinger +Mikaela,Baldini +Mike,Baldino +Mike,Baldivia +Mikel,Baldiviez +Miki,Baldo +Mikki,Baldock +Mila,Baldomero +Milagro,Baldon +Milagros,Baldonado +Milan,Baldor +Milda,Baldos +Mildred,Baldree +Miles,Baldrey +Milford,Baldridge +Milissa,Baldrige +Millard,Balducci +Millicent,Balduf +Millie,Baldus +Milly,Balduzzi +Milo,Baldwin +Milton,Baldwyn +Mimi,Baldy +Min,Baldyga +Mina,Bale +Minda,Balensiefen +Mindi,Balent +Mindy,Balentine +Minerva,Balerio +Ming,Bales +Minh,Balestra +Minh,Balestrieri +Minna,Balette +Minnie,Baley +Minta,Balezentis +Miquel,Balfany +Mira,Balfe +Miranda,Balford +Mireille,Balfour +Mirella,Balhorn +Mireya,Bali +Miriam,Balian +Mirian,Balich +Mirna,Balick +Mirta,Balicki +Mirtha,Baliga +Misha,Baligod +Miss,Balin +Missy,Balint +Misti,Balis +Mistie,Balish +Misty,Balistreri +Mitch,Balistrieri +Mitchel,Balitas +Mitchell,Balius +Mitchell,Balk +Mitsue,Balkcom +Mitsuko,Balke +Mittie,Balkey +Mitzi,Balkin +Mitzie,Balko +Miyoko,Balkus +Modesta,Ball +Modesto,Balla +Mohamed,Balladares +Mohammad,Ballagas +Mohammed,Ballagh +Moira,Ballam +Moises,Ballan +Mollie,Ballance +Molly,Ballantine +Mona,Ballantyne +Monet,Ballar +Monica,Ballard +Monika,Ballas +Monique,Ballato +Monnie,Balle +Monroe,Ballejos +Monserrate,Ballek +Monte,Ballen +Monty,Ballena +Moon,Ballengee +Mora,Ballenger +Morgan,Ballensky +Morgan,Ballentine +Moriah,Baller +Morris,Ballerini +Morton,Balles +Mose,Ballestas +Moses,Ballester +Moshe,Ballestero +Mozell,Ballesteros +Mozella,Ballesterous +Mozelle,Balletta +Mui,Balletto +Muoi,Ballew +Muriel,Balley +Murray,Ballez +My,Balleza +Myesha,Balli +Myles,Balliet +Myong,Balliett +Myra,Balliew +Myriam,Ballif +Myrl,Ballin +Myrle,Ballina +Myrna,Balling +Myron,Ballinger +Myrta,Ballintyn +Myrtice,Ballman +Myrtie,Ballmann +Myrtis,Ballmer +Myrtle,Ballog +Myung,Ballon +Na,Balloon +Nada,Ballou +Nadene,Ballow +Nadia,Ballowe +Nadine,Ballreich +Naida,Balls +Nakesha,Balluch +Nakia,Ballweg +Nakisha,Bally +Nakita,Balm +Nam,Balmaceda +Nan,Balmer +Nana,Balmes +Nancee,Balmir +Nancey,Balmores +Nanci,Balmos +Nancie,Balnis +Nancy,Balo +Nanette,Balock +Nannette,Balog +Nannie,Balogh +Naoma,Balogun +Naomi,Balok +Napoleon,Balon +Narcisa,Balonek +Natacha,Balow +Natalia,Balowski +Natalie,Baloy +Natalya,Balque +Natasha,Balsam +Natashia,Balsamo +Nathalie,Balsano +Nathan,Balser +Nathanael,Balsiger +Nathanial,Balsis +Nathaniel,Balsley +Natisha,Balson +Natividad,Balster +Natosha,Baltazar +Neal,Baltazor +Necole,Balter +Ned,Baltes +Neda,Balthazar +Nedra,Balthazor +Neely,Balthrop +Neida,Baltierra +Neil,Baltimore +Nelda,Baltodano +Nelia,Balton +Nelida,Baltrip +Nell,Baltruweit +Nella,Baltz +Nelle,Baltzell +Nellie,Baltzer +Nelly,Baltzley +Nelson,Balvanz +Nena,Balwin +Nenita,Balwinski +Neoma,Balyeat +Neomi,Balza +Nereida,Balzano +Nerissa,Balzarine +Nery,Balzarini +Nestor,Balzer +Neta,Balzotti +Nettie,Bamba +Neva,Bambace +Nevada,Bambach +Neville,Bambaci +Newton,Bambacigno +Nga,Bambas +Ngan,Bambeck +Ngoc,Bambenek +Nguyet,Bamber +Nia,Bamberg +Nichelle,Bamberger +Nichol,Bambhrolia +Nicholas,Bambino +Nichole,Bambrick +Nicholle,Bamburg +Nick,Bame +Nicki,Bamfield +Nickie,Bamford +Nickolas,Bamforth +Nickole,Bammon +Nicky,Ban +Nicky,Banaag +Nicol,Banach +Nicola,Banahan +Nicolas,Banales +Nicolasa,Banana +Nicole,Banas +Nicolette,Banasiak +Nicolle,Banaszak +Nida,Banaszek +Nidia,Banbury +Niesha,Bance +Nieves,Banchero +Nigel,Bancks +Niki,Banco +Nikia,Bancourt +Nikita,Bancroft +Nikki,Band +Nikole,Banda +Nila,Bandanza +Nilda,Bandarra +Nilsa,Bandasak +Nina,Bandel +Ninfa,Bandemer +Nisha,Banderas +Nita,Bandin +Noah,Bandle +Noble,Bandley +Nobuko,Bandt +Noe,Banducci +Noel,Bandulin +Noel,Bandura +Noelia,Bandy +Noella,Bandyk +Noelle,Bane +Noemi,Banecker +Nohemi,Banegas +Nola,Banek +Nolan,Banerjee +Noma,Banerji +Nona,Banes +Nora,Banet +Norah,Baney +Norbert,Banez +Norberto,Banfield +Noreen,Banfill +Norene,Bang +Noriko,Bangert +Norine,Banghart +Norma,Bangle +Norman,Bangs +Norman,Bangura +Normand,Banh +Norris,Bania +Nova,Baniaga +Novella,Banick +Nu,Banik +Nubia,Banis +Numbers,Banister +Numbers,Bank +Nydia,Bankard +Nyla,Banke +Obdulia,Bankemper +Ocie,Banker +Octavia,Bankert +Octavio,Bankes +Oda,Bankey +Odelia,Bankhead +Odell,Banko +Odell,Bankos +Odessa,Bankowski +Odette,Banks +Odilia,Bankson +Odis,Bankston +Ofelia,Bann +Ok,Bannan +Ola,Banner +Olen,Bannerman +Olene,Bannett +Oleta,Banning +Olevia,Bannister +Olga,Bannon +Olimpia,Bannowsky +Olin,Banome +Olinda,Banos +Oliva,Banowetz +Olive,Banowski +Oliver,Bansal +Olivia,Bansbach +Ollie,Banse +Ollie,Bansmer +Olympia,Banta +Oma,Bantay +Omar,Banter +Omega,Banther +Omer,Bantillan +Ona,Bantin +Oneida,Banton +Onie,Bantug +Onita,Bantz +Opal,Banuelos +Ophelia,Banvelos +Ora,Banville +Oralee,Banwarth +Oralia,Banwell +Oren,Banyas +Oretha,Banzhaf +Orlando,Baoloy +Orpha,Bapties +Orval,Baptise +Orville,Baptist +Oscar,Baptista +Oscar,Baptiste +Ossie,Baque +Osvaldo,Baquero +Oswaldo,Baquet +Otelia,Baquiran +Otha,Bar +Otha,Bara +Otilia,Baraban +Otis,Barabas +Otto,Barabin +Ouida,Baraby +Owen,Baracani +Ozell,Barach +Ozella,Barad +Ozie,Baradi +Pa,Baragan +Pablo,Baragar +Page,Barager +Paige,Baragona +Palma,Barahana +Palmer,Barahona +Palmira,Barajas +Pam,Barajos +Pamala,Barak +Pamela,Barakat +Pamelia,Baral +Pamella,Baran +Pamila,Baranga +Pamula,Baranick +Pandora,Baranoski +Pansy,Baranovic +Paola,Baranow +Paris,Baranowski +Paris,Baranski +Parker,Baransky +Parthenia,Baras +Particia,Barasch +Pasquale,Barash +Pasty,Baratta +Pat,Baratto +Pat,Baraw +Patience,Baray +Patria,Barayuga +Patrica,Barb +Patrice,Barba +Patricia,Barbadillo +Patricia,Barbagallo +Patrick,Barbagelata +Patrick,Barbaglia +Patrina,Barbalich +Patsy,Barban +Patti,Barbano +Pattie,Barbar +Patty,Barbara +Paul,Barbare +Paul,Barbaria +Paula,Barbarin +Paulene,Barbarino +Pauletta,Barbarito +Paulette,Barbaro +Paulina,Barbati +Pauline,Barbato +Paulita,Barbaza +Paz,Barbe +Pearl,Barbeau +Pearle,Barbee +Pearlene,Barbella +Pearlie,Barben +Pearline,Barber +Pearly,Barbera +Pedro,Barberi +Peg,Barberian +Peggie,Barberio +Peggy,Barberis +Pei,Barbero +Penelope,Barberr +Penney,Barbetta +Penni,Barbian +Pennie,Barbie +Penny,Barbier +Percy,Barbiere +Perla,Barbieri +Perry,Barbin +Perry,Barbini +Pete,Barbish +Peter,Barbo +Peter,Barbone +Petra,Barbor +Petrina,Barbosa +Petronila,Barbot +Phebe,Barbour +Phil,Barboza +Philip,Barbre +Phillip,Barbrick +Phillis,Barbu +Philomena,Barbur +Phoebe,Barbuto +Phung,Barby +Phuong,Barca +Phylicia,Barcello +Phylis,Barcellos +Phyliss,Barcelo +Phyllis,Barcelona +Pia,Barcena +Piedad,Barcenas +Pierre,Barch +Pilar,Barchacky +Ping,Barchick +Pinkie,Barchus +Piper,Barcia +Pok,Barcik +Polly,Barck +Porfirio,Barclay +Porsche,Barcley +Porsha,Barcliff +Porter,Barclift +Portia,Barco +Precious,Barcomb +Preston,Barcroft +Pricilla,Barcus +Prince,Barczak +Princess,Bard +Priscila,Barda +Priscilla,Bardach +Providencia,Bardales +Prudence,Barde +Pura,Bardeen +Qiana,Bardell +Queen,Barden +Queenie,Bardes +Quentin,Bardill +Quiana,Bardin +Quincy,Bardis +Quinn,Bardney +Quinn,Bardo +Quintin,Bardon +Quinton,Bardoner +Quyen,Bardos +Rachael,Bardsley +Rachal,Bardwell +Racheal,Bare +Rachel,Barefield +Rachele,Barefoot +Rachell,Bareford +Rachelle,Bareilles +Racquel,Bareis +Rae,Barela +Raeann,Barella +Raelene,Baremore +Rafael,Barends +Rafaela,Barentine +Raguel,Barer +Raina,Barera +Raisa,Bares +Raleigh,Baresi +Ralph,Barett +Ramiro,Barette +Ramon,Barff +Ramona,Barfield +Ramonita,Barfknecht +Rana,Barfoot +Ranae,Barfuss +Randa,Barg +Randal,Barga +Randall,Barganier +Randee,Bargar +Randell,Bargas +Randi,Barge +Randolph,Bargen +Randy,Barger +Randy,Bargeron +Ranee,Bargerstock +Raphael,Barges +Raquel,Barginear +Rashad,Bargmann +Rasheeda,Bargo +Rashida,Bargstadt +Raul,Barham +Raven,Barhorst +Ray,Barhydt +Ray,Bari +Raye,Baria +Rayford,Barias +Raylene,Baribeau +Raymon,Barich +Raymond,Barick +Raymond,Barickman +Raymonde,Baridon +Raymundo,Barie +Rayna,Barientos +Rea,Baril +Reagan,Barile +Reanna,Barill +Reatha,Barillari +Reba,Barillaro +Rebbeca,Barillas +Rebbecca,Barillo +Rebeca,Barimah +Rebecca,Baringer +Rebecka,Barino +Rebekah,Bario +Reda,Barios +Reed,Baris +Reena,Barish +Refugia,Barjas +Refugio,Barjenbruch +Refugio,Bark +Regan,Barkalow +Regena,Barkan +Regenia,Barkdoll +Reggie,Barkdull +Regina,Barke +Reginald,Barkema +Regine,Barken +Reginia,Barkenhagen +Reid,Barker +Reiko,Barkes +Reina,Barket +Reinaldo,Barkett +Reita,Barkhimer +Rema,Barkhurst +Remedios,Barkie +Remona,Barkins +Rena,Barkle +Renae,Barkley +Renaldo,Barklow +Renata,Barkman +Renate,Barko +Renato,Barks +Renay,Barksdale +Renda,Barkus +Rene,Barlage +Rene,Barlak +Renea,Barlau +Renee,Barlett +Renetta,Barletta +Renita,Barlette +Renna,Barley +Ressie,Barlip +Reta,Barlock +Retha,Barlow +Retta,Barlowe +Reuben,Barlup +Reva,Barman +Rex,Barmer +Rey,Barmes +Reyes,Barmettler +Reyna,Barmore +Reynalda,Barn +Reynaldo,Barna +Rhea,Barnaba +Rheba,Barnaby +Rhett,Barnacle +Rhiannon,Barnak +Rhoda,Barnar +Rhona,Barnard +Rhonda,Barnas +Ria,Barnathan +Ricarda,Barncastle +Ricardo,Barndt +Rich,Barne +Richard,Barnebey +Richard,Barnell +Richelle,Barner +Richie,Barners +Rick,Barnes +Rickey,Barness +Ricki,Barnet +Rickie,Barnett +Rickie,Barnette +Ricky,Barney +Rico,Barnfield +Rigoberto,Barnhardt +Rikki,Barnhart +Riley,Barnhill +Rima,Barnhouse +Rina,Barnhurst +Risa,Barnick +Rita,Barnicle +Riva,Barninger +Rivka,Barno +Rob,Barnoski +Robbi,Barns +Robbie,Barnscater +Robbie,Barnt +Robbin,Barnthouse +Robby,Barnum +Robbyn,Barnwell +Robena,Baro +Robert,Barocio +Robert,Baroldy +Roberta,Baron +Roberto,Barona +Roberto,Barone +Robin,Baroni +Robin,Baronne +Robt,Baroody +Robyn,Baros +Rocco,Barquera +Rochel,Barr +Rochell,Barra +Rochelle,Barrack +Rocio,Barraclough +Rocky,Barraco +Rod,Barragan +Roderick,Barrale +Rodger,Barran +Rodney,Barranca +Rodolfo,Barranco +Rodrick,Barranger +Rodrigo,Barras +Rogelio,Barrasa +Roger,Barratt +Roland,Barraz +Rolanda,Barraza +Rolande,Barre +Rolando,Barreca +Rolf,Barreda +Rolland,Barredo +Roma,Barree +Romaine,Barreira +Roman,Barreiro +Romana,Barrell +Romelia,Barren +Romeo,Barrena +Romona,Barreneche +Ron,Barrentine +Rona,Barrer +Ronald,Barrera +Ronald,Barreras +Ronda,Barrero +Roni,Barresi +Ronna,Barret +Ronni,Barrete +Ronnie,Barreto +Ronnie,Barrett +Ronny,Barretta +Roosevelt,Barrette +Rory,Barretto +Rory,Barria +Rosa,Barriault +Rosalba,Barribeau +Rosalee,Barricelli +Rosalia,Barrick +Rosalie,Barrickman +Rosalina,Barrie +Rosalind,Barrieau +Rosalinda,Barrientes +Rosaline,Barrientez +Rosalva,Barrientos +Rosalyn,Barrier +Rosamaria,Barriere +Rosamond,Barries +Rosana,Barriga +Rosann,Barrigan +Rosanna,Barriger +Rosanne,Barrile +Rosaria,Barrilleaux +Rosario,Barrineau +Rosario,Barriner +Rosaura,Barringer +Roscoe,Barrington +Rose,Barrio +Roseann,Barrios +Roseanna,Barris +Roseanne,Barrish +Roselee,Barritt +Roselia,Barro +Roseline,Barrocas +Rosella,Barrois +Roselle,Barrom +Roselyn,Barron +Rosemarie,Barros +Rosemary,Barroso +Rosena,Barrott +Rosenda,Barrow +Rosendo,Barrowman +Rosetta,Barrows +Rosette,Barrs +Rosia,Barrus +Rosie,Barry +Rosina,Barryman +Rosio,Bars +Rosita,Barsalou +Roslyn,Barsamian +Ross,Barsanti +Rossana,Barscewski +Rossie,Barsch +Rosy,Barschdoor +Rowena,Barsegyan +Roxana,Barsh +Roxane,Barshaw +Roxann,Barski +Roxanna,Barsky +Roxanne,Barsness +Roxie,Barson +Roxy,Barsotti +Roy,Barsoum +Roy,Barstad +Royal,Barstow +Royce,Barsuhn +Royce,Barswell +Rozanne,Bart +Rozella,Barta +Ruben,Bartamian +Rubi,Bartash +Rubie,Bartberger +Rubin,Bartch +Ruby,Bartczak +Rubye,Barte +Rudolf,Bartee +Rudolph,Bartek +Rudy,Bartel +Rudy,Bartell +Rueben,Bartels +Rufina,Bartelson +Rufus,Bartelt +Rupert,Bartenfield +Russ,Barter +Russel,Barters +Russell,Bartgis +Russell,Barth +Rusty,Bartha +Ruth,Barthe +Rutha,Barthel +Ruthann,Barthelemy +Ruthanne,Barthell +Ruthe,Barthelman +Ruthie,Barthelmes +Ryan,Barthen +Ryan,Barthlow +Ryann,Barthol +Sabina,Barthold +Sabine,Bartholemew +Sabra,Bartholf +Sabrina,Bartholic +Sacha,Bartholomay +Sachiko,Bartholomeu +Sade,Bartholomew +Sadie,Bartholow +Sadye,Bartimus +Sage,Bartin +Sal,Bartkiewicz +Salena,Bartko +Salina,Bartkowiak +Salley,Bartkowski +Sallie,Bartkus +Sally,Bartl +Salome,Bartle +Salvador,Bartlebaugh +Salvatore,Bartles +Sam,Bartleson +Sam,Bartlet +Samantha,Bartlett +Samara,Bartlette +Samatha,Bartley +Samella,Bartling +Samira,Bartlome +Sammie,Bartlone +Sammie,Bartlow +Sammy,Bartman +Sammy,Bartmes +Samual,Bartmess +Samuel,Bartnett +Samuel,Bartnick +Sana,Bartnik +Sanda,Barto +Sandee,Bartol +Sandi,Bartoldus +Sandie,Bartolet +Sandra,Bartoletti +Sandy,Bartoli +Sandy,Bartolini +Sanford,Bartolo +Sang,Bartolome +Sang,Bartolomei +Sanjuana,Bartolomeo +Sanjuanita,Bartolomucci +Sanora,Bartolone +Santa,Bartolotta +Santana,Bartolotto +Santiago,Barton +Santina,Bartone +Santo,Bartos +Santos,Bartosch +Santos,Bartosh +Sara,Bartosiak +Sarah,Bartosiewicz +Sarai,Bartosik +Saran,Bartosz +Sari,Bartoszek +Sarina,Bartow +Sarita,Bartram +Sasha,Bartron +Saturnina,Bartrop +Sau,Bartrum +Saul,Barts +Saundra,Bartsch +Savanna,Bartucca +Savannah,Bartucci +Scarlet,Bartula +Scarlett,Bartunek +Scot,Bartus +Scott,Bartush +Scott,Bartuska +Scottie,Bartylla +Scottie,Bartz +Scotty,Baruch +Sean,Barufaldi +Sean,Baruffa +Season,Baruffi +Sebastian,Barus +Sebrina,Barut +See,Baruth +Seema,Barvick +Selena,Barvosa +Selene,Barwell +Selina,Barwick +Selma,Bary +Sena,Barz +Senaida,Barze +September,Barzey +Serafina,Basa +Serena,Basaldua +Sergio,Basanta +Serina,Basara +Serita,Basbas +Seth,Bascas +Setsuko,Bascetta +Seymour,Basch +Sha,Bascle +Shad,Basco +Shae,Bascom +Shaina,Bascomb +Shakia,Bascombe +Shakira,Basden +Shakita,Base +Shala,Basehore +Shalanda,Basel +Shalon,Baseler +Shalonda,Baseley +Shameka,Baselice +Shamika,Baseman +Shan,Basemore +Shana,Basey +Shanae,Basford +Shanda,Basgall +Shandi,Bash +Shandra,Basha +Shane,Basham +Shane,Bashara +Shaneka,Bashaw +Shanel,Basher +Shanell,Bashford +Shanelle,Bashi +Shani,Bashinelli +Shanice,Bashir +Shanika,Bashline +Shaniqua,Bashor +Shanita,Bashore +Shanna,Basich +Shannan,Basil +Shannon,Basila +Shannon,Basile +Shanon,Basiliere +Shanta,Basilio +Shantae,Basilone +Shantay,Basinger +Shante,Basini +Shantel,Basinski +Shantell,Basista +Shantelle,Baskas +Shanti,Baskerville +Shaquana,Basket +Shaquita,Baskett +Shara,Baskette +Sharan,Baskin +Sharda,Baskind +Sharee,Baskins +Sharell,Baskow +Sharen,Basler +Shari,Basley +Sharice,Basner +Sharie,Basnett +Sharika,Basnight +Sharilyn,Basom +Sharita,Bason +Sharla,Basone +Sharleen,Basora +Sharlene,Basore +Sharmaine,Basque +Sharolyn,Basques +Sharon,Basquez +Sharonda,Bass +Sharri,Bassage +Sharron,Bassali +Sharyl,Bassani +Sharyn,Bassano +Shasta,Basse +Shaun,Bassel +Shaun,Basset +Shauna,Bassett +Shaunda,Bassette +Shaunna,Bassetti +Shaunta,Bassford +Shaunte,Bassham +Shavon,Bassi +Shavonda,Bassil +Shavonne,Bassin +Shawana,Bassiti +Shawanda,Bassler +Shawanna,Basso +Shawn,Bassolino +Shawn,Bassuk +Shawna,Bast +Shawnda,Basta +Shawnee,Bastain +Shawnna,Bastarache +Shawnta,Bastardi +Shay,Bastedo +Shayla,Basten +Shayna,Baster +Shayne,Bastian +Shayne,Bastianelli +Shea,Bastic +Sheba,Bastick +Sheena,Bastida +Sheila,Bastidas +Sheilah,Bastidos +Shela,Bastien +Shelba,Bastilla +Shelby,Bastille +Shelby,Bastin +Sheldon,Bastine +Shelia,Baston +Shella,Bastone +Shelley,Bastos +Shelli,Bastow +Shellie,Bastress +Shelly,Bastura +Shelton,Basu +Shemeka,Basua +Shemika,Basulto +Shena,Basurto +Shenika,Baswell +Shenita,Basye +Shenna,Batala +Shera,Batalla +Sheree,Batalona +Sherell,Batara +Sheri,Batarse +Sherice,Batas +Sheridan,Batch +Sherie,Batchelder +Sherika,Batcheller +Sherill,Batchellor +Sherilyn,Batchelor +Sherise,Batcher +Sherita,Batdorf +Sherlene,Bate +Sherley,Batel +Sherly,Bateman +Sherlyn,Bater +Sherman,Baters +Sheron,Bates +Sherrell,Batesole +Sherri,Bateson +Sherrie,Batey +Sherril,Bath +Sherrill,Bathe +Sherron,Bathke +Sherry,Bathrick +Sherryl,Bathurst +Sherwood,Batie +Shery,Batimon +Sheryl,Batis +Sheryll,Batista +Shiela,Batiste +Shila,Batistich +Shiloh,Batiz +Shin,Batkin +Shira,Batko +Shirely,Batley +Shirl,Batliner +Shirlee,Batlis +Shirleen,Batlle +Shirlene,Batman +Shirley,Baton +Shirley,Bator +Shirly,Batra +Shizue,Batres +Shizuko,Batrez +Shon,Batrich +Shona,Batrum +Shonda,Batson +Shondra,Batt +Shonna,Batta +Shonta,Battaglia +Shoshana,Battaglini +Shu,Battaglino +Shyla,Battani +Sibyl,Batte +Sid,Battee +Sidney,Batteen +Sidney,Batteiger +Sierra,Batten +Signe,Battenfield +Sigrid,Battenhouse +Silas,Batter +Silva,Batterman +Silvana,Batters +Silvia,Battersby +Sima,Battershell +Simon,Batterson +Simona,Batterton +Simone,Battey +Simonne,Battiata +Sina,Battiato +Sindy,Battie +Siobhan,Battiest +Sirena,Battig +Siu,Battin +Sixta,Battino +Skye,Battis +Slyvia,Battista +So,Battiste +Socorro,Battisti +Sofia,Battistini +Soila,Battisto +Sol,Battistone +Sol,Battistoni +Solange,Battko +Soledad,Battle +Solomon,Battles +Somer,Batto +Sommer,Batton +Son,Batts +Son,Battson +Sona,Battuello +Sondra,Batty +Song,Batun +Sonia,Baty +Sonja,Batz +Sonny,Batzer +Sonya,Batzli +Soo,Batzri +Sook,Bau +Soon,Baublitz +Sophia,Bauce +Sophie,Bauch +Soraya,Baucher +Sparkle,Bauchspies +Spencer,Baucom +Spring,Baucum +Stacee,Bauder +Stacey,Baudino +Stacey,Baudler +Staci,Baudoin +Stacia,Baudry +Stacie,Bauer +Stacy,Bauerkemper +Stacy,Bauerle +Stan,Bauerlein +Stanford,Bauermeister +Stanley,Bauernfeind +Stanton,Bauers +Star,Baugatz +Starla,Baugess +Starr,Baugh +Stasia,Baugham +Stefan,Baughan +Stefani,Baugher +Stefania,Baughey +Stefanie,Baughman +Stefany,Baughn +Steffanie,Bauguess +Stella,Baugus +Stepanie,Bauknecht +Stephaine,Bauknight +Stephan,Baul +Stephane,Baulch +Stephani,Bault +Stephania,Baum +Stephanie,Bauman +Stephany,Baumann +Stephen,Baumbach +Stephen,Baumberger +Stephenie,Baumbusch +Stephine,Baumeister +Stephnie,Baumer +Sterling,Baumert +Steve,Baumfalk +Steven,Baumgard +Steven,Baumgardner +Stevie,Baumgardt +Stevie,Baumgarn +Stewart,Baumgarner +Stormy,Baumgart +Stuart,Baumgartel +Su,Baumgarten +Suanne,Baumgarter +Sudie,Baumgartner +Sue,Baumhoer +Sueann,Baumiester +Suellen,Baumkirchner +Suk,Baumler +Sulema,Baumli +Sumiko,Baumohl +Summer,Baun +Sun,Baune +Sunday,Baunleuang +Sung,Baur +Sung,Baurer +Sunni,Baures +Sunny,Baus +Sunshine,Bausch +Susan,Bauserman +Susana,Bauske +Susann,Bausley +Susanna,Bausman +Susannah,Bauswell +Susanne,Bautch +Susie,Baute +Susy,Bautista +Suzan,Bautiste +Suzann,Bautz +Suzanna,Bauza +Suzanne,Bava +Suzette,Bavard +Suzi,Bavaro +Suzie,Bavelas +Suzy,Baver +Svetlana,Baves +Sybil,Bavier +Syble,Bavzee +Sydney,Bawa +Sydney,Bawany +Sylvester,Bawcombe +Sylvia,Bawcum +Sylvie,Bawden +Synthia,Bawek +Syreeta,Bawer +Ta,Bawks +Tabatha,Bawner +Tabetha,Bax +Tabitha,Baxa +Tad,Baxendale +Tai,Baxi +Taina,Baxley +Taisha,Baxter +Tajuana,Baxtor +Takako,Bay +Takisha,Bayala +Talia,Bayani +Talisha,Bayard +Talitha,Bayardo +Tam,Bayas +Tama,Baydal +Tamala,Bayer +Tamar,Bayerl +Tamara,Bayers +Tamatha,Bayes +Tambra,Bayete +Tameika,Baygents +Tameka,Bayhonan +Tamekia,Bayird +Tamela,Bayle +Tamera,Bayles +Tamesha,Bayless +Tami,Bayley +Tamica,Bayliff +Tamie,Baylis +Tamika,Bayliss +Tamiko,Baylock +Tamisha,Baylon +Tammara,Baylor +Tammera,Bayly +Tammi,Bayman +Tammie,Baymon +Tammy,Bayn +Tamra,Baynard +Tana,Bayne +Tandra,Baynes +Tandy,Baynham +Taneka,Bayon +Tanesha,Bayona +Tangela,Bayot +Tania,Bayouth +Tanika,Bays +Tanisha,Baysden +Tanja,Baysinger +Tanna,Baysmore +Tanner,Bayt +Tanya,Bayton +Tara,Baytos +Tarah,Bayuk +Taren,Bayus +Tari,Baza +Tarra,Bazaldua +Tarsha,Bazan +Taryn,Bazar +Tasha,Bazarte +Tashia,Bazata +Tashina,Baze +Tasia,Bazel +Tatiana,Bazelais +Tatum,Bazemore +Tatyana,Bazer +Taunya,Bazil +Tawana,Bazile +Tawanda,Bazin +Tawanna,Bazinet +Tawna,Bazner +Tawny,Bazydlo +Tawnya,Bazylewicz +Taylor,Bazzanella +Taylor,Bazzano +Tayna,Bazzel +Ted,Bazzell +Teddy,Bazzi +Teena,Bazzle +Tegan,Be +Teisha,Bea +Telma,Beaber +Temeka,Beabout +Temika,Beach +Tempie,Beacham +Temple,Beachamp +Tena,Beachel +Tenesha,Beachell +Tenisha,Beachem +Tennie,Beacher +Tennille,Beachler +Teodora,Beachman +Teodoro,Beachum +Teofila,Beachy +Tequila,Beacom +Tera,Beadell +Tereasa,Beadle +Terence,Beadles +Teresa,Beadling +Terese,Beadnell +Teresia,Beady +Teresita,Beagan +Teressa,Beagle +Teri,Beagley +Terica,Beahan +Terina,Beahm +Terisa,Beahn +Terra,Beaird +Terrance,Beakley +Terrell,Beal +Terrell,Beale +Terrence,Bealer +Terresa,Beales +Terri,Beall +Terrie,Bealle +Terrilyn,Bealmear +Terry,Beals +Terry,Beam +Tesha,Beaman +Tess,Beamer +Tessa,Beames +Tessie,Beamesderfer +Thad,Beamish +Thaddeus,Beamon +Thalia,Beams +Thanh,Bean +Thanh,Beanblossom +Thao,Beandoin +Thea,Beane +Theda,Beaner +Thelma,Beans +Theo,Bear +Theo,Bearce +Theodora,Beard +Theodore,Beardall +Theola,Bearded +Theresa,Bearden +Therese,Beardmore +Theresia,Beardon +Theressa,Beards +Theron,Beardslee +Thersa,Beardsley +Thi,Beare +Thomas,Bearfield +Thomas,Bearman +Thomasena,Bears +Thomasina,Bearse +Thomasine,Bearup +Thora,Beary +Thresa,Beas +Thu,Beasley +Thurman,Beasly +Thuy,Beasmore +Tia,Beason +Tiana,Beaston +Tianna,Beat +Tiara,Beath +Tien,Beathe +Tiera,Beatie +Tierra,Beatley +Tiesha,Beato +Tifany,Beaton +Tiffaney,Beatrice +Tiffani,Beatson +Tiffanie,Beattie +Tiffany,Beattle +Tiffiny,Beatty +Tijuana,Beaty +Tilda,Beau +Tillie,Beaubien +Tim,Beaubrun +Timika,Beaucage +Timmy,Beauchaine +Timothy,Beauchamp +Timothy,Beauchemin +Tina,Beauchesne +Tinisha,Beaudet +Tiny,Beaudette +Tisa,Beaudin +Tish,Beaudine +Tisha,Beaudion +Titus,Beaudoin +Tobi,Beaudreau +Tobias,Beaudreault +Tobie,Beaudrie +Toby,Beaudry +Toby,Beaufait +Toccara,Beauford +Tod,Beaufort +Todd,Beaugard +Toi,Beauharnois +Tom,Beaulac +Tomas,Beaule +Tomasa,Beaulieu +Tomeka,Beauliev +Tomi,Beauman +Tomika,Beaumier +Tomiko,Beaumont +Tommie,Beaumonte +Tommie,Beauparlant +Tommy,Beaupre +Tommy,Beauprez +Tommye,Beauregard +Tomoko,Beaureguard +Tona,Beaushaw +Tonda,Beausoleil +Tonette,Beauvais +Toney,Beaven +Toni,Beaver +Tonia,Beavers +Tonie,Beavin +Tonisha,Beavis +Tonita,Beaz +Tonja,Beazer +Tony,Beazley +Tony,Bebber +Tonya,Bebeau +Tora,Bebee +Tori,Beberwyk +Torie,Bebo +Torri,Bebout +Torrie,Beccaria +Tory,Beccue +Tory,Becena +Tosha,Becenti +Toshia,Becera +Toshiko,Becerra +Tova,Becerril +Towanda,Bech +Toya,Bechard +Tracee,Bechel +Tracey,Becher +Tracey,Becherer +Traci,Bechler +Tracie,Bechman +Tracy,Becht +Tracy,Bechtel +Tran,Bechthold +Trang,Bechtol +Travis,Bechtold +Travis,Beck +Treasa,Becka +Treena,Becke +Trena,Beckel +Trent,Beckelheimer +Trenton,Beckelhimer +Tresa,Beckem +Tressa,Beckenbach +Tressie,Beckendorf +Treva,Becker +Trevor,Beckerdite +Trey,Beckerle +Tricia,Beckerman +Trina,Beckers +Trinh,Beckert +Trinidad,Beckes +Trinidad,Becket +Trinity,Beckett +Trish,Beckey +Trisha,Beckfield +Trista,Beckford +Tristan,Beckham +Tristan,Beckim +Troy,Beckius +Troy,Beckler +Trudi,Beckles +Trudie,Beckley +Trudy,Becklin +Trula,Becklund +Truman,Beckman +Tu,Beckmann +Tuan,Beckmeyer +Tula,Becknell +Tuyet,Beckner +Twana,Beckom +Twanda,Beckor +Twanna,Becks +Twila,Beckstead +Twyla,Beckstrand +Ty,Beckstrom +Tyesha,Beckton +Tyisha,Beckum +Tyler,Beckwith +Tyler,Beckworth +Tynisha,Becky +Tyra,Becnel +Tyree,Becraft +Tyrell,Becton +Tyron,Becvar +Tyrone,Becwar +Tyson,Becze +Ula,Bedar +Ulrike,Bedard +Ulysses,Bedatsky +Un,Bedaw +Una,Beddard +Ursula,Beddia +Usha,Beddingfield +Ute,Beddo +Vada,Beddoe +Val,Beddome +Val,Beddow +Valarie,Beddows +Valda,Bede +Valencia,Bedeau +Valene,Bedee +Valentin,Bedeker +Valentina,Bedell +Valentine,Bedenbaugh +Valentine,Bedenfield +Valeri,Beder +Valeria,Bedford +Valerie,Bedgood +Valery,Bedient +Vallie,Bedillion +Valorie,Bedingfield +Valrie,Bedker +Van,Bedlion +Van,Bednar +Vance,Bednarczyk +Vanda,Bednarek +Vanesa,Bednarik +Vanessa,Bednarowicz +Vanetta,Bednarski +Vania,Bednarz +Vanita,Bedner +Vanna,Bedney +Vannesa,Bednorz +Vannessa,Bedocs +Vashti,Bedoka +Vasiliki,Bedolla +Vaughn,Bedonie +Veda,Bedor +Velda,Bedore +Velia,Bedoya +Vella,Bedre +Velma,Bedrosian +Velva,Bedsaul +Velvet,Bedsole +Vena,Bedson +Venessa,Bedward +Venetta,Bedwell +Venice,Bee +Venita,Beebe +Vennie,Beebee +Venus,Beebout +Veola,Beech +Vera,Beecham +Verda,Beecher +Verdell,Beeching +Verdie,Beechler +Verena,Beechner +Vergie,Beechum +Verla,Beeck +Verlene,Beecken +Verlie,Beeckman +Verline,Beecroft +Vern,Beed +Verna,Beede +Vernell,Beedham +Vernetta,Beedle +Vernia,Beedles +Vernice,Beedoo +Vernie,Beedy +Vernita,Beeghly +Vernon,Beegle +Vernon,Beehler +Verona,Beek +Veronica,Beeker +Veronika,Beekman +Veronique,Beeks +Versie,Beel +Vertie,Beelar +Vesta,Beelby +Veta,Beeler +Vi,Beem +Vicenta,Beeman +Vicente,Beemer +Vickey,Beemon +Vicki,Been +Vickie,Beene +Vicky,Beenel +Victor,Beer +Victor,Beerbohm +Victoria,Beere +Victorina,Beerer +Vida,Beerle +Viki,Beerling +Vikki,Beerly +Vilma,Beerman +Vina,Beermann +Vince,Beermudez +Vincent,Beers +Vincenza,Beery +Vincenzo,Bees +Vinita,Beese +Vinnie,Beesley +Viola,Beesmer +Violet,Beeson +Violeta,Beetley +Violette,Beets +Virgen,Beetz +Virgie,Beevers +Virgil,Beezley +Virgil,Befort +Virgilio,Befus +Virgina,Bega +Virginia,Began +Vita,Begay +Vito,Begaye +Viva,Begeal +Vivan,Begeman +Vivian,Begen +Viviana,Beger +Vivien,Begg +Vivienne,Beggs +Von,Beghtol +Voncile,Begin +Vonda,Begley +Vonnie,Begnaud +Wade,Begnoche +Wai,Begolli +Waldo,Begonia +Walker,Begor +Wallace,Beguelin +Wally,Beguhl +Walter,Begum +Walter,Begun +Walton,Behal +Waltraud,Behan +Wan,Behanan +Wanda,Behanna +Waneta,Behar +Wanetta,Behel +Wanita,Behen +Ward,Beherns +Warner,Behimer +Warren,Behizadeh +Wava,Behl +Waylon,Behlen +Wayne,Behler +Wei,Behling +Weldon,Behlke +Wen,Behlmer +Wendell,Behm +Wendi,Behme +Wendie,Behmer +Wendolyn,Behn +Wendy,Behne +Wenona,Behner +Werner,Behney +Wes,Behning +Wesley,Behnke +Wesley,Behnken +Weston,Behr +Whitley,Behran +Whitney,Behrend +Whitney,Behrends +Wilber,Behrendt +Wilbert,Behrens +Wilbur,Behrenwald +Wilburn,Behring +Wilda,Behringer +Wiley,Behrle +Wilford,Behrman +Wilfred,Behrmann +Wilfredo,Behrns +Wilhelmina,Behun +Wilhemina,Behunin +Will,Behymer +Willa,Beichner +Willard,Beidleman +Willena,Beidler +Willene,Beien +Willetta,Beier +Willette,Beierle +Willia,Beierschmitt +William,Beigert +William,Beighley +Williams,Beightol +Willian,Beik +Willie,Beil +Willie,Beile +Williemae,Beiler +Willis,Beiley +Willodean,Beilfuss +Willow,Beilinson +Willy,Beilke +Wilma,Beilman +Wilmer,Beilstein +Wilson,Bein +Wilton,Beine +Windy,Beinlich +Winford,Beiriger +Winfred,Beirise +Winifred,Beirne +Winnie,Beisch +Winnifred,Beisel +Winona,Beiser +Winston,Beish +Winter,Beisner +Wm,Beissel +Wonda,Beisser +Woodrow,Beiswanger +Wyatt,Beiswenger +Wynell,Beitel +Wynona,Beiter +Xavier,Beith +Xenia,Beitler +Xiao,Beitz +Xiomara,Beitzel +Xochitl,Beja +Xuan,Bejar +Yadira,Bejaran +Yaeko,Bejarano +Yael,Bejcek +Yahaira,Bejerano +Yajaira,Bejger +Yan,Bejil +Yang,Bejjani +Yanira,Bek +Yasmin,Bekele +Yasmine,Beker +Yasuko,Bekerman +Yee,Bekhit +Yelena,Bekins +Yen,Bekis +Yer,Bekius +Yesenia,Bekker +Yessenia,Bel +Yetta,Bela +Yevette,Belair +Yi,Belak +Ying,Belancer +Yoko,Beland +Yolanda,Belanger +Yolande,Belangia +Yolando,Belanich +Yolonda,Belarde +Yon,Belardo +Yong,Belarmino +Yong,Belasco +Yoshie,Belay +Yoshiko,Belback +Youlanda,Belcastro +Young,Belch +Young,Belcher +Yu,Belchior +Yuette,Belcourt +Yuk,Belden +Yuki,Beldin +Yukiko,Belding +Yuko,Beldon +Yulanda,Belen +Yun,Belew +Yung,Beley +Yuonne,Belezos +Yuri,Belfanti +Yuriko,Belfast +Yvette,Belfi +Yvone,Belfield +Yvonne,Belfiglio +Zachariah,Belfiore +Zachary,Belflower +Zachery,Belford +Zack,Belfort +Zackary,Belfy +Zada,Belgard +Zaida,Belgarde +Zana,Belgrade +Zandra,Belgrave +Zane,Belhumeur +Zelda,Beliard +Zella,Belich +Zelma,Belidor +Zena,Belieu +Zenaida,Belile +Zenia,Beliles +Zenobia,Belin +Zetta,Belina +Zina,Belinski +Zita,Belinsky +Zoe,Belisle +Zofia,Belitz +Zoila,Beliveau +Zola,Beliz +Zona,Belizaire +Zonia,Beljan +Zora,Belk +Zoraida,Belka +Zula,Belke +Zulema,Belken +Zulma,Belkin diff --git a/batch/file-ingest/data/split/names_aa.csv b/batch/file-ingest/data/split/names_aa.csv new file mode 100644 index 0000000..103b843 --- /dev/null +++ b/batch/file-ingest/data/split/names_aa.csv @@ -0,0 +1,280 @@ +Aaron,Aaberg +Aaron,Aaby +Abbey,Aadland +Abbie,Aagaard +Abby,Aakre +Abdul,Aaland +Abe,Aalbers +Abel,Aalderink +Abigail,Aalund +Abraham,Aamodt +Abram,Aamot +Ada,Aanderud +Adah,Aanenson +Adalberto,Aanerud +Adaline,Aarant +Adam,Aardema +Adam,Aarestad +Adan,Aarhus +Addie,Aaron +Adela,Aarons +Adelaida,Aaronson +Adelaide,Aarsvold +Adele,Aas +Adelia,Aasby +Adelina,Aase +Adeline,Aasen +Adell,Aavang +Adella,Abad +Adelle,Abadi +Adena,Abadie +Adina,Abair +Adolfo,Abaja +Adolph,Abajian +Adria,Abalos +Adrian,Abaloz +Adrian,Abar +Adriana,Abarca +Adriane,Abare +Adrianna,Abascal +Adrianne,Abasta +Adrien,Abate +Adriene,Abati +Adrienne,Abatiell +Afton,Abato +Agatha,Abatti +Agnes,Abaunza +Agnus,Abaya +Agripina,Abbadessa +Agueda,Abbamonte +Agustin,Abbas +Agustina,Abbasi +Ahmad,Abbassi +Ahmed,Abbate +Ai,Abbatiello +Aida,Abbay +Aide,Abbe +Aiko,Abbed +Aileen,Abbenante +Ailene,Abbey +Aimee,Abbinanti +Aisha,Abbington +Aja,Abbitt +Akiko,Abbot +Akilah,Abbott +Al,Abboud +Alaina,Abbruzzese +Alaine,Abbs +Alan,Abby +Alana,Abdalla +Alane,Abdallah +Alanna,Abdel +Alayna,Abdelal +Alba,Abdelaziz +Albert,Abdeldayen +Albert,Abdelhamid +Alberta,Abdella +Albertha,Abdelmuti +Albertina,Abdelrahman +Albertine,Abdelwahed +Alberto,Abdi +Albina,Abdin +Alda,Abdo +Alden,Abdon +Aldo,Abdool +Alease,Abdou +Alec,Abdul +Alecia,Abdula +Aleen,Abdulaziz +Aleida,Abdulkarim +Aleisha,Abdulla +Alejandra,Abdullah +Alejandrina,Abdullai +Alejandro,Abdulmateen +Alena,Abdulmuniem +Alene,Abdur +Alesha,Abe +Aleshia,Abeb +Alesia,Abed +Alessandra,Abedelah +Aleta,Abedi +Aletha,Abee +Alethea,Abegg +Alethia,Abeita +Alex,Abel +Alex,Abela +Alexa,Abelar +Alexander,Abelardo +Alexander,Abele +Alexandra,Abeles +Alexandria,Abell +Alexia,Abella +Alexis,Abellera +Alexis,Abelman +Alfonso,Abeln +Alfonzo,Abels +Alfred,Abelson +Alfreda,Aben +Alfredia,Abend +Alfredo,Abendroth +Ali,Aber +Ali,Abercombie +Alia,Abercrombie +Alica,Aberle +Alice,Abernatha +Alicia,Abernathy +Alida,Abernethy +Alina,Aberson +Aline,Abes +Alisa,Abeta +Alise,Abete +Alisha,Abetrani +Alishia,Abeyta +Alisia,Abide +Alison,Abigantus +Alissa,Abila +Alita,Abilay +Alix,Abild +Aliza,Abilez +Alla,Abina +Allan,Abington +Alleen,Abitong +Allegra,Abke +Allen,Abkemeier +Allen,Ablang +Allena,Ablao +Allene,Able +Allie,Ableman +Alline,Abler +Allison,Ables +Allyn,Ablin +Allyson,Abling +Alma,Abner +Almeda,Abnet +Almeta,Abney +Alona,Abo +Alonso,Abolafia +Alonzo,Abolt +Alpha,Abood +Alphonse,Aboshihata +Alphonso,Aboud +Alta,Aboudi +Altagracia,Aboulahoud +Altha,Aboulissan +Althea,Abousaleh +Alton,Aboytes +Alva,Abplanalp +Alva,Abrachinsky +Alvaro,Abraham +Alvera,Abrahamian +Alverta,Abrahams +Alvin,Abrahamsen +Alvina,Abrahamson +Alyce,Abram +Alycia,Abramek +Alysa,Abramian +Alyse,Abramoff +Alysha,Abramov +Alysia,Abramovich +Alyson,Abramovitz +Alyssa,Abramowitz +Amada,Abramowski +Amado,Abrams +Amal,Abramson +Amalia,Abrantes +Amanda,Abreau +Amber,Abrecht +Amberly,Abrego +Ambrose,Abrell +Amee,Abreo +Amelia,Abreu +America,Abrev +Ami,Abrew +Amie,Abrey +Amiee,Abrial +Amina,Abril +Amira,Abriola +Ammie,Abrom +Amos,Abron +Amparo,Abruzzese +Amy,Abruzzino +An,Abruzzo +Ana,Absalon +Anabel,Abshear +Analisa,Absher +Anamaria,Abshier +Anastacia,Abshire +Anastasia,Abson +Andera,Abston +Anderson,Abt +Andra,Abts +Andre,Abu +Andre,Abuaita +Andrea,Abubakr +Andrea,Abud +Andreas,Abuel +Andree,Abugn +Andres,Abuhl +Andrew,Abundis +Andrew,Abundiz +Andria,Aburto +Andy,Abusufait +Anette,Acal +Angel,Acampora +Angel,Accala +Angela,Accardi +Angele,Accardo +Angelena,Accetta +Angeles,Accetturo +Angelia,Accola +Angelic,Accomando +Angelica,Accornero +Angelika,Accosta +Angelina,Accurso +Angeline,Ace +Angelique,Acebedo +Angelita,Acebo +Angella,Acedo +Angelo,Acee +Angelo,Aceituno +Angelyn,Acencio +Angie,Aceret +Angila,Acerno +Angla,Acero +Angle,Acerra +Anglea,Aceto +Anh,Aceuedo +Anibal,Acevado +Anika,Aceveda +Anisa,Acevedo +Anisha,Aceves +Anissa,Acey +Anita,Acfalle +Anitra,Achane +Anja,Ache +Anjanette,Acheampong +Anjelica,Achee +Ann,Achekian +Anna,Achenbach +Annabel,Acheson +Annabell,Achille +Annabelle,Achilles +Annalee,Achin +Annalisa,Achor +Annamae,Achord +Annamaria,Achorn +Annamarie,Achter +Anne,Achterhof +Anneliese,Achzet +Annelle,Achziger +Annemarie,Acierno +Annett,Acimovic +Annetta,Ack +Annette,Ackah +Annice,Acken +Annie,Acker +Annika,Ackerley +Annis,Ackerly +Annita,Ackerman +Annmarie,Ackermann +Anthony,Ackers diff --git a/batch/file-ingest/data/split/names_ab.csv b/batch/file-ingest/data/split/names_ab.csv new file mode 100644 index 0000000..ebfbe3c --- /dev/null +++ b/batch/file-ingest/data/split/names_ab.csv @@ -0,0 +1,280 @@ +Anthony,Ackerson +Antione,Ackert +Antionette,Ackies +Antoine,Ackins +Antoinette,Ackison +Anton,Ackiss +Antone,Ackland +Antonetta,Acklen +Antonette,Ackles +Antonia,Ackley +Antonia,Acklin +Antonietta,Ackman +Antonina,Ackmann +Antonio,Ackroyd +Antonio,Acly +Antony,Acoba +Antwan,Acocella +Anya,Acock +Apolonia,Acoff +April,Acor +Apryl,Acord +Ara,Acorda +Araceli,Acors +Aracelis,Acosta +Aracely,Acosto +Arcelia,Acothley +Archie,Acquaviva +Ardath,Acquilla +Ardelia,Acre +Ardell,Acree +Ardella,Acres +Ardelle,Acrey +Arden,Acri +Ardis,Acron +Ardith,Actis +Aretha,Acton +Argelia,Acuff +Argentina,Acuna +Ariana,Acy +Ariane,Ada +Arianna,Adachi +Arianne,Adair +Arica,Adalja +Arie,Adam +Ariel,Adamaitis +Ariel,Adamcik +Arielle,Adamczak +Arla,Adamczyk +Arlean,Adame +Arleen,Adamec +Arlen,Adamek +Arlena,Adames +Arlene,Adami +Arletha,Adamiak +Arletta,Adamik +Arlette,Adamis +Arlie,Adamitis +Arlinda,Adamo +Arline,Adamos +Arlyne,Adamowski +Armand,Adams +Armanda,Adamsen +Armandina,Adamski +Armando,Adamsky +Armida,Adamson +Arminda,Adamsonis +Arnetta,Adamyan +Arnette,Adan +Arnita,Adank +Arnold,Adas +Arnoldo,Adauto +Arnulfo,Adaway +Aron,Aday +Arron,Adcock +Art,Adcox +Arthur,Addair +Arthur,Addams +Artie,Addario +Arturo,Addeo +Arvilla,Adderley +Asa,Adderly +Asha,Addesso +Ashanti,Addicks +Ashely,Addie +Ashlea,Addiego +Ashlee,Addington +Ashleigh,Addis +Ashley,Addison +Ashley,Addleman +Ashli,Addo +Ashlie,Adduci +Ashly,Addy +Ashlyn,Ade +Ashton,Adebisi +Asia,Adee +Asley,Adel +Assunta,Adelblue +Astrid,Adelgren +Asuncion,Adelizzi +Athena,Adell +Aubrey,Adelman +Aubrey,Adelmann +Audie,Adelmund +Audra,Adels +Audrea,Adelsberg +Audrey,Adelson +Audria,Adelsperger +Audrie,Adelstein +Audry,Adema +August,Aden +Augusta,Adens +Augustina,Ader +Augustine,Aderhold +Augustine,Aderholdt +Augustus,Aderholt +Aundrea,Aderman +Aura,Aderson +Aurea,Ades +Aurelia,Adessa +Aurelio,Adesso +Aurora,Adey +Aurore,Adeyemo +Austin,Adger +Austin,Adham +Autumn,Adhami +Ava,Adi +Avelina,Adib +Avery,Adickes +Avery,Adie +Avis,Adil +Avril,Adinolfi +Awilda,Adjei +Ayako,Adjutant +Ayana,Adkerson +Ayanna,Adkin +Ayesha,Adkins +Azalee,Adkinson +Azucena,Adkison +Azzie,Adkisson +Babara,Adlam +Babette,Adle +Bailey,Adleman +Bambi,Adler +Bao,Adley +Barabara,Adling +Barb,Adloff +Barbar,Admas +Barbara,Admire +Barbera,Adner +Barbie,Adney +Barbra,Adolf +Bari,Adolfo +Barney,Adolfson +Barrett,Adolph +Barrie,Adolphe +Barry,Adolphsen +Bart,Adolphson +Barton,Adolphus +Basil,Adomaitis +Basilia,Adon +Bea,Adonis +Beata,Adorno +Beatrice,Adragna +Beatris,Adrian +Beatriz,Adriance +Beau,Adriano +Beaulah,Adrid +Bebe,Adrien +Becki,Adrion +Beckie,Adrovel +Becky,Adside +Bee,Adsit +Belen,Adu +Belia,Aduddell +Belinda,Adule +Belkis,Adwell +Bell,Ady +Bella,Adzhabakyan +Belle,Aegerter +Belva,Aeillo +Ben,Aeling +Benedict,Aemmer +Benita,Aerni +Benito,Aerts +Benjamin,Aery +Bennett,Aeschbacher +Bennie,Aeschliman +Bennie,Aeschlimann +Benny,Afable +Benton,Afalava +Berenice,Afan +Berna,Afanador +Bernadette,Affagato +Bernadine,Affeld +Bernard,Affelt +Bernarda,Affeltranger +Bernardina,Affleck +Bernardine,Afflick +Bernardo,Affolter +Berneice,Affronti +Bernetta,Aflalo +Bernice,Afoa +Bernie,Afonso +Bernie,Africa +Berniece,Afshar +Bernita,Afshari +Berry,Afton +Berry,Afurong +Bert,Afzal +Berta,Agamao +Bertha,Agan +Bertie,Agans +Bertram,Agar +Beryl,Agard +Bess,Agarwal +Bessie,Agbayani +Beth,Agbisit +Bethanie,Agcaoili +Bethann,Age +Bethany,Ageboi +Bethel,Agee +Betsey,Agel +Betsy,Agemy +Bette,Agena +Bettie,Agent +Bettina,Ager +Betty,Agers +Bettyann,Agerter +Bettye,Agerton +Beula,Aggarwal +Beulah,Aggas +Bev,Aggers +Beverlee,Agib +Beverley,Agilar +Beverly,Agin +Bianca,Agins +Bibi,Agle +Bill,Agler +Billi,Agliam +Billie,Agne +Billie,Agnelli +Billy,Agnello +Billy,Agner +Billye,Agnes +Birdie,Agnew +Birgit,Agney +Blaine,Agni +Blair,Agnor +Blair,Agoff +Blake,Agonoy +Blake,Agor +Blanca,Agoras +Blanch,Agoro +Blanche,Agosta +Blondell,Agosti +Blossom,Agostinelli +Blythe,Agostini +Bo,Agostino +Bob,Agosto +Bobbi,Agpaoa +Bobbie,Agramonte +Bobbie,Agrawal +Bobby,Agre +Bobby,Agreda +Bobbye,Agredano +Bobette,Agrela +Bok,Agresta +Bong,Agreste +Bonita,Agresti +Bonnie,Agresto +Bonny,Agricola +Booker,Agriesti +Boris,Agrios +Boyce,Agro +Boyd,Agron +Brad,Agtarap +Bradford,Aguada +Bradley,Aguado +Bradly,Aguallo +Brady,Aguas diff --git a/batch/file-ingest/data/split/names_ac.csv b/batch/file-ingest/data/split/names_ac.csv new file mode 100644 index 0000000..2610d5a --- /dev/null +++ b/batch/file-ingest/data/split/names_ac.csv @@ -0,0 +1,280 @@ +Brain,Aguayo +Branda,Agudelo +Brande,Agudo +Brandee,Agueda +Branden,Aguele +Brandi,Aguero +Brandie,Aguiar +Brandon,Aguila +Brandon,Aguilar +Brandy,Aguiler +Brant,Aguilera +Breana,Aguillar +Breann,Aguillard +Breanna,Aguillera +Breanne,Aguillon +Bree,Aguinaga +Brenda,Aguinaldo +Brendan,Aguiniga +Brendon,Aguino +Brenna,Aguire +Brent,Aguirre +Brenton,Agular +Bret,Aguliar +Brett,Agumga +Brett,Agundez +Brian,Agunos +Brian,Aguon +Briana,Agurs +Brianna,Agustin +Brianne,Agustine +Brice,Agustino +Bridget,Agyeman +Bridgett,Ahal +Bridgette,Ahalt +Brigette,Aharon +Brigid,Aharoni +Brigida,Aharonof +Brigitte,Ahart +Brinda,Ahaus +Britany,Ahearn +Britney,Ahern +Britni,Aherns +Britt,Ahhee +Britt,Ahia +Britta,Ahimud +Brittaney,Ahl +Brittani,Ahlberg +Brittanie,Ahlborn +Brittany,Ahlbrecht +Britteny,Ahle +Brittney,Ahlemeyer +Brittni,Ahler +Brittny,Ahlers +Brock,Ahles +Broderick,Ahlf +Bronwyn,Ahlfield +Brook,Ahlgren +Brooke,Ahlheim +Brooks,Ahlin +Bruce,Ahlm +Bruna,Ahlman +Brunilda,Ahlo +Bruno,Ahlquist +Bryan,Ahlstedt +Bryanna,Ahlstrom +Bryant,Ahluwalia +Bryce,Ahmad +Brynn,Ahmadi +Bryon,Ahmann +Buck,Ahmau +Bud,Ahmed +Buddy,Ahn +Buena,Ahne +Buffy,Ahnell +Buford,Ahner +Bula,Aho +Bulah,Aholt +Bunny,Ahonen +Burl,Ahr +Burma,Ahrendes +Burt,Ahrends +Burton,Ahrendt +Buster,Ahrenholtz +Byron,Ahrenholz +Caitlin,Ahrens +Caitlyn,Ahrenstorff +Calandra,Ahrent +Caleb,Ahrns +Calista,Ahsan +Callie,Ahsing +Calvin,Ahuja +Camelia,Ahumada +Camellia,Ahuna +Cameron,Ahyet +Cameron,Ahyou +Cami,Aiava +Camie,Aichele +Camila,Aicklen +Camilla,Aid +Camille,Aidt +Cammie,Aiello +Cammy,Aievoli +Candace,Aigner +Candance,Aihara +Candelaria,Aiken +Candi,Aikens +Candice,Aikey +Candida,Aikin +Candie,Aikins +Candis,Aikman +Candra,Ailes +Candy,Ailey +Candyce,Ailiff +Caprice,Aills +Cara,Ailor +Caren,Ailshire +Carey,Ailstock +Carey,Ailsworth +Cari,Ailts +Caridad,Aimbez +Carie,Aimone +Carin,Aina +Carina,Aines +Carisa,Ainge +Carissa,Aini +Carita,Ainley +Carl,Ainscough +Carl,Ainsley +Carla,Ainslie +Carlee,Ainsworth +Carleen,Aiola +Carlena,Aiona +Carlene,Aipopo +Carletta,Aiporlani +Carley,Aipperspach +Carli,Aird +Carlie,Airhart +Carline,Airington +Carlita,Airola +Carlo,Airth +Carlos,Aispuro +Carlos,Aita +Carlota,Aitcheson +Carlotta,Aitchison +Carlton,Aites +Carly,Aitken +Carlyn,Aitkin +Carma,Aitkins +Carman,Aiton +Carmel,Aiu +Carmela,Aiudi +Carmelia,Aiuto +Carmelina,Aivao +Carmelita,Aiyer +Carmella,Aja +Carmelo,Ajani +Carmen,Ajasin +Carmen,Ajayi +Carmina,Ajello +Carmine,Ajoku +Carmon,Ajose +Carol,Akahi +Carol,Akal +Carola,Akamine +Carolann,Akamiro +Carole,Akana +Carolee,Akande +Carolin,Akapo +Carolina,Akard +Caroline,Akau +Caroll,Akawanzie +Carolyn,Akbar +Carolyne,Akbari +Carolynn,Ake +Caron,Akel +Caroyln,Akemon +Carri,Aken +Carrie,Aker +Carrol,Akerley +Carrol,Akerman +Carroll,Akers +Carroll,Akerson +Carry,Akery +Carson,Akes +Carter,Akey +Cary,Akhand +Cary,Akhavan +Caryl,Akhtar +Carylon,Aki +Caryn,Akiereisen +Casandra,Akim +Casey,Akima +Casey,Akimseu +Casie,Akin +Casimira,Akinrefon +Cassandra,Akins +Cassaundra,Akinyooye +Cassey,Akiona +Cassi,Akiyama +Cassidy,Akkerman +Cassie,Akles +Cassondra,Akley +Cassy,Akmal +Catalina,Ako +Catarina,Akoni +Caterina,Akpan +Catharine,Akram +Catherin,Akre +Catherina,Akridge +Catherine,Akright +Cathern,Aksamit +Catheryn,Aksoy +Cathey,Akuchie +Cathi,Akuna +Cathie,Akwei +Cathleen,Ala +Cathrine,Alacano +Cathryn,Alagna +Cathy,Alai +Catina,Alaibilla +Catrice,Alaimo +Catrina,Alalem +Cayla,Alam +Cecelia,Alambar +Cecil,Alameda +Cecil,Alameida +Cecila,Alamia +Cecile,Alamilla +Cecilia,Alamillo +Cecille,Alamin +Cecily,Alamo +Cedric,Alamos +Cedrick,Alampi +Celena,Alan +Celesta,Aland +Celeste,Alanis +Celestina,Alaniz +Celestine,Alanko +Celia,Alano +Celina,Alapai +Celinda,Alar +Celine,Alarcon +Celsa,Alarcone +Ceola,Alarid +Cesar,Alarie +Chad,Alario +Chadwick,Alas +Chae,Alatorre +Chan,Alatosse +Chana,Alattar +Chance,Alavi +Chanda,Alawdi +Chandra,Alaya +Chanel,Alba +Chanell,Albach +Chanelle,Albair +Chang,Albaladejo +Chang,Alban +Chantal,Albanese +Chantay,Albanez +Chante,Albang +Chantel,Albani +Chantell,Albano +Chantelle,Albany +Chara,Albarado +Charis,Albarazi +Charise,Albares +Charissa,Albarez +Charisse,Albarracin +Charita,Albarran +Charity,Albaugh +Charla,Albe +Charleen,Albea +Charlena,Albee +Charlene,Albelo +Charles,Alben +Charles,Alber +Charlesetta,Alberda +Charlette,Alberding +Charley,Alberg diff --git a/batch/file-ingest/data/split/names_ad.csv b/batch/file-ingest/data/split/names_ad.csv new file mode 100644 index 0000000..3e33429 --- /dev/null +++ b/batch/file-ingest/data/split/names_ad.csv @@ -0,0 +1,280 @@ +Charlie,Albergotti +Charlie,Alberico +Charline,Albero +Charlott,Alberro +Charlotte,Alberry +Charlsie,Albers +Charlyn,Alberson +Charmain,Albert +Charmaine,Alberta +Charolette,Alberthal +Chas,Alberti +Chase,Albertine +Chasidy,Albertini +Chasity,Alberto +Chassidy,Alberts +Chastity,Albertsen +Chau,Albertson +Chauncey,Alberty +Chaya,Albery +Chelsea,Albin +Chelsey,Albini +Chelsie,Albino +Cher,Albiston +Chere,Albor +Cheree,Alborn +Cherelle,Albornoz +Cheri,Albracht +Cherie,Albrashi +Cherilyn,Albrecht +Cherise,Albrekht +Cherish,Albright +Cherly,Albriton +Cherlyn,Albrittain +Cherri,Albritton +Cherrie,Albro +Cherry,Albrough +Cherryl,Albu +Chery,Albury +Cheryl,Albus +Cheryle,Alby +Cheryll,Alcaide +Chester,Alcala +Chet,Alcalde +Cheyenne,Alcantar +Chi,Alcantara +Chi,Alcantas +Chia,Alcaoa +Chieko,Alcaraz +Chin,Alcazar +China,Alce +Ching,Alcide +Chiquita,Alcina +Chloe,Alcine +Chong,Alcini +Chong,Alcivar +Chris,Alcocer +Chris,Alcock +Chrissy,Alcombright +Christa,Alcon +Christal,Alconcel +Christeen,Alcorn +Christel,Alcorta +Christen,Alcoser +Christena,Alcosiba +Christene,Alcott +Christi,Aldaba +Christia,Aldaco +Christian,Aldama +Christian,Aldana +Christiana,Aldapa +Christiane,Aldape +Christie,Aldarondo +Christin,Aldas +Christina,Aldava +Christine,Alday +Christinia,Aldaz +Christoper,Aldecoa +Christopher,Alden +Christopher,Alder +Christy,Alderete +Chrystal,Alderfer +Chu,Alderink +Chuck,Alderman +Chun,Alderson +Chung,Alderton +Chung,Aldi +Ciara,Aldinger +Cicely,Aldo +Ciera,Aldonza +Cierra,Aldous +Cinda,Aldred +Cinderella,Aldredge +Cindi,Aldrege +Cindie,Aldrete +Cindy,Aldrich +Cinthia,Aldridge +Cira,Aldrige +Clair,Aldrow +Clair,Aldworth +Claire,Alea +Clara,Alecca +Clare,Aleem +Clarence,Aleff +Clarence,Alegar +Claretha,Alegi +Claretta,Alegre +Claribel,Alegria +Clarice,Aleizar +Clarinda,Alejandre +Clarine,Alejandrez +Claris,Alejandro +Clarisa,Alejo +Clarissa,Alejos +Clarita,Alekna +Clark,Aleksey +Classie,Aleman +Claud,Alemany +Claude,Alen +Claude,Aleo +Claudette,Alepin +Claudia,Alequin +Claudie,Aler +Claudine,Alers +Claudio,Alert +Clay,Alerte +Clayton,Ales +Clelia,Alesci +Clemencia,Alescio +Clement,Aleshire +Clemente,Alesi +Clementina,Alesna +Clementine,Alessandrini +Clemmie,Alessandro +Cleo,Alessandroni +Cleo,Alesse +Cleopatra,Alessi +Cleora,Alessio +Cleotilde,Alevedo +Cleta,Alevras +Cletus,Alewine +Cleveland,Alex +Cliff,Alexader +Clifford,Alexaki +Clifton,Alexakis +Clint,Alexander +Clinton,Alexanders +Clora,Alexandra +Clorinda,Alexandre +Clotilde,Alexandria +Clyde,Alexandropoul +Clyde,Alexanian +Codi,Alexender +Cody,Alexidor +Cody,Alexion +Colby,Alexiou +Colby,Alexis +Cole,Alexnder +Coleen,Alexopoulos +Coleman,Alexy +Colene,Alexzander +Coletta,Aley +Colette,Aleyandrez +Colin,Alf +Colleen,Alfandre +Collen,Alfano +Collene,Alfaro +Collette,Alfera +Collin,Alferez +Colton,Alfero +Columbus,Alff +Concepcion,Alfieri +Conception,Alfiero +Concetta,Alfisi +Concha,Alfonsi +Conchita,Alfonso +Connie,Alfonzo +Connie,Alford +Conrad,Alfred +Constance,Alfredo +Consuela,Alfreds +Consuelo,Alfrey +Contessa,Alfson +Cora,Algarin +Coral,Alge +Coralee,Algee +Coralie,Algeo +Corazon,Alger +Cordelia,Alghamdi +Cordell,Algien +Cordia,Algier +Cordie,Algire +Coreen,Algood +Corene,Alguire +Coretta,Alhaddad +Corey,Alhambra +Corey,Alhameed +Cori,Alhusseini +Corie,Ali +Corina,Aliaga +Corine,Aliano +Corinna,Alias +Corinne,Aliberti +Corliss,Alibozek +Cornelia,Alicandro +Cornelius,Alice +Cornell,Alicea +Corrie,Alicer +Corrin,Alicia +Corrina,Alicuben +Corrine,Alie +Corrinne,Alier +Cortez,Aliff +Cortney,Alig +Cory,Alim +Cory,Aliment +Courtney,Alimento +Courtney,Alimo +Coy,Aline +Craig,Alioto +Creola,Aliotta +Cris,Alipio +Criselda,Alire +Crissy,Alires +Crista,Alirez +Cristal,Alisauskas +Cristen,Alison +Cristi,Alix +Cristie,Alizadeh +Cristin,Aljemal +Cristina,Alkana +Cristine,Alkbsh +Cristobal,Alkema +Cristopher,Alken +Cristy,Alkins +Cruz,Alkire +Cruz,All +Crysta,Allaband +Crystal,Allabaugh +Crystle,Allah +Cuc,Allain +Curt,Allaire +Curtis,Allam +Curtis,Allaman +Cyndi,Allamon +Cyndy,Allamong +Cynthia,Allan +Cyril,Allanson +Cyrstal,Allara +Cyrus,Allard +Cythia,Allateef +Dacia,Allaway +Dagmar,Allbee +Dagny,Allbert +Dahlia,Allbones +Daina,Allbright +Daine,Allbritten +Daisey,Allbritton +Daisy,Allcock +Dakota,Allcorn +Dale,Allday +Dale,Allder +Dalene,Alldredge +Dalia,Allebach +Dalila,Allee +Dallas,Allegood +Dallas,Allegra +Dalton,Allegre +Damaris,Allegretta +Damian,Allegretti +Damien,Allegrini +Damion,Allegrucci +Damon,Alleman +Dan,Allemand +Dan,Allemond +Dana,Allen +Dana,Allenbach +Danae,Allenbaugh +Dane,Allenbrand +Danelle,Allende +Danette,Allender diff --git a/batch/file-ingest/data/split/names_ae.csv b/batch/file-ingest/data/split/names_ae.csv new file mode 100644 index 0000000..650b227 --- /dev/null +++ b/batch/file-ingest/data/split/names_ae.csv @@ -0,0 +1,280 @@ +Dani,Allendorf +Dania,Allenson +Danial,Allensworth +Danica,Aller +Daniel,Allerman +Daniel,Allers +Daniela,Allerton +Daniele,Alleruzzo +Daniell,Allery +Daniella,Alles +Danielle,Alleshouse +Danika,Allessi +Danille,Allessio +Danilo,Alleva +Danita,Allevato +Dann,Allex +Danna,Alley +Dannette,Alleyne +Dannie,Allford +Dannie,Allgaeuer +Dannielle,Allgaier +Danny,Allgeier +Dante,Allgeyer +Danuta,Allgier +Danyel,Allgire +Danyell,Allgood +Danyelle,Allhands +Daphine,Alli +Daphne,Alliance +Dara,Allie +Darby,Alligood +Darcel,Alliman +Darcey,Allin +Darci,Allinder +Darcie,Alling +Darcy,Allinger +Darell,Allington +Daren,Allio +Daria,Allis +Darin,Allison +Dario,Alliston +Darius,Allman +Darla,Allmand +Darleen,Allmon +Darlena,Allmond +Darlene,Allnutt +Darline,Allocca +Darnell,Allocco +Darnell,Allon +Daron,Allor +Darrel,Alloway +Darrell,Allphin +Darren,Allred +Darrick,Allridge +Darrin,Alls +Darron,Allsbrook +Darryl,Allsbrooks +Darwin,Allscheid +Daryl,Allshouse +Daryl,Allsop +Dave,Allston +David,Allstott +David,Allsup +Davida,Allton +Davina,Alltop +Davis,Allum +Dawn,Allums +Dawna,Allvin +Dawne,Allwardt +Dayle,Allwood +Dayna,Ally +Daysi,Allyn +Deadra,Allyne +Dean,Alm +Dean,Alma +Deana,Almada +Deandra,Almaguer +Deandre,Almajhoub +Deandrea,Alman +Deane,Almand +Deangelo,Almanza +Deann,Almanzar +Deanna,Almaras +Deanne,Almaraz +Deb,Almarez +Debbi,Almario +Debbie,Almarza +Debbra,Almas +Debby,Almasi +Debera,Almazan +Debi,Alme +Debora,Almeda +Deborah,Almeida +Debra,Almen +Debrah,Almenar +Debroah,Almendarez +Dede,Almengor +Dedra,Almerico +Dee,Almestica +Dee,Almeter +Deeann,Almeyda +Deeanna,Almgren +Deedee,Almiron +Deedra,Almodova +Deena,Almodovar +Deetta,Almon +Deidra,Almond +Deidre,Almonte +Deirdre,Almos +Deja,Almquist +Del,Almstead +Delaine,Almsteadt +Delana,Almy +Delbert,Alnas +Delcie,Alnoor +Delena,Alnutt +Delfina,Alo +Delia,Aloan +Delicia,Aloe +Delila,Aloi +Delilah,Aloia +Delinda,Aloisi +Delisa,Alonge +Dell,Alongi +Della,Alonso +Delma,Alonza +Delmar,Alonzo +Delmer,Alosa +Delmy,Alosta +Delois,Alouf +Deloise,Aloy +Delora,Alpaugh +Deloras,Alper +Delores,Alperin +Deloris,Alpern +Delorse,Alpers +Delpha,Alpert +Delphia,Alpha +Delphine,Alpheaus +Delsie,Alphin +Delta,Alphonse +Demarcus,Alphonso +Demetra,Alpis +Demetria,Alpizar +Demetrice,Alquesta +Demetrius,Alquicira +Demetrius,Alquijay +Dena,Alquisira +Denae,Alrais +Deneen,Alred +Denese,Alrich +Denice,Alrod +Denis,Alsandor +Denise,Alsaqri +Denisha,Alsberry +Denisse,Alsbrook +Denita,Alsbrooks +Denna,Alsbury +Dennis,Alsdon +Dennis,Alsheimer +Dennise,Alshouse +Denny,Alsina +Denny,Alsing +Denver,Alsip +Denyse,Alsman +Deon,Alsobrook +Deon,Alsobrooks +Deonna,Alson +Derek,Alsop +Derick,Alspach +Derrick,Alspaugh +Deshawn,Alstad +Desirae,Alston +Desire,Alstott +Desiree,Alstrom +Desmond,Alsup +Despina,Alt +Dessie,Altadonna +Destiny,Altamirano +Detra,Altamiruno +Devin,Altaras +Devin,Altavilla +Devon,Altemus +Devon,Altenbach +Devona,Altenburg +Devora,Altenhofen +Devorah,Alter +Dewayne,Alteri +Dewey,Alterio +Dewitt,Alterman +Dexter,Altermatt +Dia,Altes +Diamond,Altew +Dian,Althaus +Diana,Althauser +Diane,Altheimer +Diann,Althiser +Dianna,Althoff +Dianne,Althouse +Dick,Altic +Diedra,Altice +Diedre,Altidor +Diego,Altier +Dierdre,Altieri +Digna,Altiery +Dillon,Altig +Dimple,Altimus +Dina,Altizer +Dinah,Altken +Dino,Altman +Dinorah,Altmann +Dion,Altmark +Dion,Altmiller +Dione,Altmire +Dionna,Alto +Dionne,Altobell +Dirk,Altobelli +Divina,Altobello +Dixie,Altom +Dodie,Altomare +Dollie,Altomari +Dolly,Altomonte +Dolores,Alton +Doloris,Altonen +Domenic,Altop +Domenica,Altreche +Dominga,Altringer +Domingo,Altro +Dominic,Altrogge +Dominica,Altschuler +Dominick,Altshuler +Dominique,Altsisi +Dominique,Altstatt +Dominque,Altum +Domitila,Altvater +Domonique,Altwies +Don,Alty +Dona,Alu +Donald,Aluarado +Donald,Aluarez +Donella,Aluise +Donetta,Alukonis +Donette,Alumbaugh +Dong,Alummoottil +Dong,Aluqdah +Donita,Alva +Donn,Alvacado +Donna,Alvalle +Donnell,Alvanas +Donnetta,Alvanez +Donnette,Alvara +Donnie,Alvarado +Donnie,Alvardo +Donny,Alvarenga +Donovan,Alvarengo +Donte,Alvares +Donya,Alvarez +Dora,Alvaro +Dorathy,Alvarracin +Dorcas,Alvarran +Doreatha,Alvear +Doreen,Alvelo +Dorene,Alven +Doretha,Alverado +Dorethea,Alveraz +Doretta,Alverest +Dori,Alverez +Doria,Alverio +Dorian,Alvernaz +Dorian,Alvero +Dorie,Alverson +Dorinda,Alves +Dorine,Alvey +Doris,Alvez +Dorla,Alvia +Dorotha,Alviar +Dorothea,Alvidrez +Dorothy,Alvin +Dorris,Alvine +Dorsey,Alvino diff --git a/batch/file-ingest/data/split/names_af.csv b/batch/file-ingest/data/split/names_af.csv new file mode 100644 index 0000000..6c7a07a --- /dev/null +++ b/batch/file-ingest/data/split/names_af.csv @@ -0,0 +1,280 @@ +Dortha,Alvira +Dorthea,Alvirez +Dorthey,Alvis +Dorthy,Alviso +Dot,Alvizo +Dottie,Alvord +Dotty,Alvorez +Doug,Alwan +Douglas,Alwang +Douglass,Alward +Dovie,Alwardt +Doyle,Alway +Dreama,Alwazan +Drema,Alwin +Drew,Alwine +Drew,Aly +Drucilla,Alyea +Drusilla,Alzaga +Duane,Alzate +Dudley,Alzugaray +Dulce,Amabile +Dulcie,Amacher +Duncan,Amack +Dung,Amacker +Dusti,Amadeo +Dustin,Amadi +Dusty,Amadio +Dusty,Amado +Dwain,Amadon +Dwana,Amador +Dwayne,Amailla +Dwight,Amaker +Dyan,Amalfitano +Dylan,Amalong +Earl,Aman +Earle,Amancio +Earlean,Amann +Earleen,Amano +Earlene,Amante +Earlie,Amanza +Earline,Amar +Earnest,Amara +Earnestine,Amaral +Eartha,Amarante +Easter,Amargo +Eboni,Amari +Ebonie,Amarian +Ebony,Amarillas +Echo,Amaro +Ed,Amas +Eda,Amason +Edda,Amass +Eddie,Amat +Eddie,Amati +Eddy,Amato +Edelmira,Amauty +Eden,Amavisca +Edgar,Amaya +Edgardo,Amazan +Edie,Ambagis +Edison,Ambeau +Edith,Amber +Edmond,Amberg +Edmund,Ambers +Edmundo,Amberson +Edna,Ambert +Edra,Amble +Edris,Ambler +Eduardo,Amboise +Edward,Amboree +Edward,Amborn +Edwardo,Ambres +Edwin,Ambrister +Edwina,Ambriz +Edyth,Ambrogi +Edythe,Ambrose +Effie,Ambrosia +Efrain,Ambrosini +Efren,Ambrosino +Ehtel,Ambrosio +Eileen,Ambrosius +Eilene,Ambrosone +Ela,Ambroz +Eladia,Ambroziak +Elaina,Ambuehl +Elaine,Amburgey +Elana,Amburgy +Elane,Amburn +Elanor,Amdahl +Elayne,Amderson +Elba,Amedee +Elbert,Amedeo +Elda,Amedro +Elden,Ameduri +Eldon,Ameen +Eldora,Ameigh +Eldridge,Amejorado +Eleanor,Amel +Eleanora,Amela +Eleanore,Amelang +Elease,Ameling +Elena,Amelio +Elene,Amell +Eleni,Amelung +Elenor,Amemiya +Elenora,Amen +Elenore,Amend +Eleonor,Amendola +Eleonora,Ament +Eleonore,Amenta +Elfreda,Amentler +Elfrieda,Amento +Elfriede,Amer +Eli,America +Elia,American +Eliana,Amerine +Elias,Amerio +Elicia,Amerman +Elida,Amero +Elidia,Amerson +Elijah,Amert +Elin,Ames +Elina,Amesbury +Elinor,Amescua +Elinore,Amesquieto +Elisa,Amesquita +Elisabeth,Amey +Elise,Amezaga +Eliseo,Amezcua +Elisha,Amezquita +Elisha,Amici +Elissa,Amick +Eliz,Amico +Eliza,Amicone +Elizabet,Amidei +Elizabeth,Amidi +Elizbeth,Amidon +Elizebeth,Amie +Elke,Amigo +Ella,Amigon +Ellamae,Amill +Ellan,Amin +Ellen,Amini +Ellena,Aminov +Elli,Amiot +Ellie,Amir +Elliot,Amirault +Elliott,Amiri +Ellis,Amirian +Ellis,Amis +Ellsworth,Amisano +Elly,Amison +Ellyn,Amistadi +Elma,Amistoso +Elmer,Amith +Elmer,Amlin +Elmira,Ammann +Elmo,Ammar +Elna,Ammer +Elnora,Ammerman +Elodia,Ammirata +Elois,Ammirati +Eloisa,Ammirato +Eloise,Ammon +Elouise,Ammonds +Eloy,Ammons +Elroy,Amo +Elsa,Amoa +Else,Amoah +Elsie,Amoako +Elsy,Amodei +Elton,Amodeo +Elva,Amodio +Elvera,Amodt +Elvia,Amoe +Elvie,Amolsch +Elvin,Amon +Elvina,Amonette +Elvira,Amons +Elvis,Amor +Elwanda,Amore +Elwood,Amorello +Elyse,Amores +Elza,Amoriello +Ema,Amorim +Emanuel,Amorin +Emelda,Amormino +Emelia,Amoros +Emelina,Amorose +Emeline,Amorosi +Emely,Amoroso +Emerald,Amoruso +Emerita,Amory +Emerson,Amos +Emery,Amoss +Emiko,Amott +Emil,Amour +Emile,Amous +Emilee,Amparan +Emilia,Amparo +Emilie,Amphy +Emilio,Ampy +Emily,Amr +Emma,Amrein +Emmaline,Amrhein +Emmanuel,Amrich +Emmett,Amrine +Emmie,Amsbaugh +Emmitt,Amsberry +Emmy,Amsdell +Emogene,Amsden +Emory,Amsili +Ena,Amsinger +Enda,Amsler +Enedina,Amsley +Eneida,Amspaugh +Enid,Amspoker +Enoch,Amstein +Enola,Amster +Enrique,Amsterdam +Enriqueta,Amstrong +Epifania,Amstutz +Era,Amtower +Erasmo,Amundsen +Eric,Amundson +Eric,Amunrud +Erica,Amuso +Erich,Amweg +Erick,Amy +Ericka,Amyot +Erik,Amyotte +Erika,Amys +Erin,Amyx +Erin,An +Erinn,Ana +Erlene,Anable +Erlinda,Anacker +Erline,Anadio +Erma,Anagnos +Ermelinda,Anagnost +Erminia,Anagnostou +Erna,Anakalea +Ernest,Analla +Ernestina,Anand +Ernestine,Anania +Ernesto,Ananias +Ernie,Anasagasti +Errol,Anast +Ervin,Anastacio +Erwin,Anastas +Eryn,Anastasi +Esmeralda,Anastasia +Esperanza,Anastasiades +Essie,Anastasio +Esta,Anastos +Esteban,Anauo +Estefana,Anawalt +Estela,Anawaty +Estell,Anaya +Estella,Ancalade +Estelle,Ancar +Ester,Ancel +Esther,Ancelet +Estrella,Ancell +Etha,Ancheta +Ethan,Anchondo +Ethel,Anchors +Ethelene,Ancic +Ethelyn,Ancira +Ethyl,Anciso +Etsuko,Ancona +Etta,Ancrum +Ettie,Anctil +Eufemia,Ancy +Eugena,Anda +Eugene,Andalora +Eugene,Andary +Eugenia,Andaverde +Eugenie,Andaya +Eugenio,Andebe diff --git a/batch/file-ingest/data/split/names_ag.csv b/batch/file-ingest/data/split/names_ag.csv new file mode 100644 index 0000000..77118fe --- /dev/null +++ b/batch/file-ingest/data/split/names_ag.csv @@ -0,0 +1,280 @@ +Eula,Andel +Eulah,Andelman +Eulalia,Ander +Eun,Andera +Euna,Anderberg +Eunice,Andere +Eura,Anderegg +Eusebia,Anderholm +Eusebio,Anderl +Eustolia,Anderlik +Eva,Anderman +Evalyn,Anderon +Evan,Anders +Evan,Andersen +Evangelina,Anderson +Evangeline,Andersson +Eve,Anderst +Evelia,Andert +Evelin,Anderton +Evelina,Andes +Eveline,Andeson +Evelyn,Andina +Evelyne,Anding +Evelynn,Andino +Everett,Andis +Everette,Ando +Evette,Andoh +Evia,Andon +Evie,Andonian +Evita,Andra +Evon,Andrachak +Evonne,Andracki +Ewa,Andrada +Exie,Andrade +Ezekiel,Andrades +Ezequiel,Andradez +Ezra,Andrado +Fabian,Andrae +Fabiola,Andrango +Fae,Andras +Fairy,Andre +Faith,Andrea +Fallon,Andreadis +Fannie,Andreas +Fanny,Andreasen +Farah,Andreason +Farrah,Andreassen +Fatima,Andreassi +Fatimah,Andreatta +Faustina,Andree +Faustino,Andreen +Fausto,Andreessen +Faviola,Andregg +Fawn,Andren +Fay,Andreola +Faye,Andreoli +Fe,Andreoni +Federico,Andreotti +Felecia,Andreozzi +Felica,Andrepont +Felice,Andres +Felicia,Andresen +Felicidad,Andress +Felicita,Andreu +Felicitas,Andreula +Felipa,Andrew +Felipe,Andrews +Felisa,Andrian +Felisha,Andrich +Felix,Andrick +Felton,Andries +Ferdinand,Andringa +Fermin,Andrino +Fermina,Andrion +Fern,Andriopulos +Fernanda,Andris +Fernande,Andrle +Fernando,Androde +Ferne,Androes +Fidel,Androlewicz +Fidela,Andronis +Fidelia,Andros +Filiberto,Androsky +Filomena,Andrson +Fiona,Andrulis +Flavia,Andrus +Fleta,Andruss +Fletcher,Andruszkiewic +Flo,Andruzzi +Flor,Andry +Flora,Andrzejczak +Florance,Andrzejczyk +Florence,Andrzejewski +Florencia,Andueza +Florencio,Andujar +Florene,Andujo +Florentina,Andy +Florentino,Andzulis +Floretta,Anecelle +Floria,Anelli +Florida,Anello +Florinda,Anene +Florine,Anerton +Florrie,Anes +Flossie,Aneshansley +Floy,Anesi +Floyd,Anestos +Fonda,Anetsberger +Forest,Anewalt +Forrest,Aney +Foster,Anez +Fran,Anfinson +France,Ang +Francene,Angalich +Frances,Angarola +Frances,Ange +Francesca,Angel +Francesco,Angela +Franchesca,Angelbeck +Francie,Angeles +Francina,Angeletti +Francine,Angeli +Francis,Angelica +Francis,Angelico +Francisca,Angelilli +Francisco,Angelillo +Francisco,Angeline +Francoise,Angelini +Frank,Angelino +Frank,Angell +Frankie,Angelle +Frankie,Angello +Franklin,Angellotti +Franklyn,Angelo +Fransisca,Angelocci +Fred,Angeloff +Fred,Angelone +Freda,Angeloni +Fredda,Angeloro +Freddie,Angelos +Freddie,Angelotti +Freddy,Angelou +Frederic,Angelovich +Frederica,Angelozzi +Frederick,Angelson +Fredericka,Angelucci +Fredia,Anger +Fredric,Angerer +Fredrick,Angerman +Fredricka,Angermeier +Freeda,Angeron +Freeman,Angers +Freida,Angert +Frida,Angevine +Frieda,Angiano +Fritz,Angier +Fumiko,Angilello +Gabriel,Angileri +Gabriel,Angilletta +Gabriela,Angiolelli +Gabriele,Angiolillo +Gabriella,Angione +Gabrielle,Angis +Gail,Anglada +Gail,Anglade +Gala,Angland +Gale,Angle +Gale,Anglea +Galen,Angleberger +Galina,Anglebrandt +Garfield,Anglemyer +Garland,Anglen +Garnet,Angles +Garnett,Angleton +Garret,Angley +Garrett,Anglin +Garry,Anglum +Garth,Angocicco +Gary,Angold +Gary,Angolo +Gaston,Angon +Gavin,Angotti +Gay,Angove +Gaye,Angrisano +Gayla,Angry +Gayle,Angst +Gayle,Angstadt +Gaylene,Angton +Gaylord,Anguiano +Gaynell,Angulo +Gaynelle,Angus +Gearldine,Angustia +Gema,Angviano +Gemma,Angwin +Gena,Anhalt +Genaro,Anhorn +Gene,Anibal +Gene,Anichini +Genesis,Anick +Geneva,Anidi +Genevie,Aniello +Genevieve,Animashaun +Genevive,Aningalan +Genia,Aninion +Genie,Aniol +Genna,Anis +Gennie,Anitok +Genny,Ankenman +Genoveva,Ankeny +Geoffrey,Anker +Georgann,Ankersen +George,Anklam +George,Ankney +Georgeann,Ankrapp +Georgeanna,Ankrom +Georgene,Ankrum +Georgetta,Anliker +Georgette,Ann +Georgia,Anna +Georgiana,Annabel +Georgiann,Annable +Georgianna,Annal +Georgianne,Annala +Georgie,Annan +Georgina,Annand +Georgine,Annarino +Gerald,Annarummo +Gerald,Annarumo +Geraldine,Annas +Geraldo,Anne +Geralyn,Anneler +Gerard,Annen +Gerardo,Annese +Gerda,Anness +Geri,Annett +Germaine,Annette +German,Annibale +Gerri,Annicchiarico +Gerry,Annichiarico +Gerry,Anning +Gertha,Annino +Gertie,Annis +Gertrud,Anno +Gertrude,Annon +Gertrudis,Annonio +Gertude,Annunziata +Ghislaine,Annuzzi +Gia,Ano +Gianna,Anoe +Gidget,Anolick +Gigi,Anon +Gil,Anos +Gilbert,Anreozzi +Gilberte,Ansara +Gilberto,Ansari +Gilda,Ansbacher +Gillian,Ansbro +Gilma,Anschutz +Gina,Ansel +Ginette,Ansell +Ginger,Anselm +Ginny,Anselmi +Gino,Anselmo +Giovanna,Anshutz +Giovanni,Ansley +Gisela,Anslinger +Gisele,Ansloan +Giselle,Anslow +Gita,Ansoategui +Giuseppe,Anson +Giuseppina,Anspach +Gladis,Anspaugh +Glady,Anstead +Gladys,Anstett +Glayds,Anstey +Glen,Anstine +Glenda,Antal +Glendora,Antao +Glenn,Antaya +Glenn,Antczak diff --git a/batch/file-ingest/data/split/names_ah.csv b/batch/file-ingest/data/split/names_ah.csv new file mode 100644 index 0000000..0f138cd --- /dev/null +++ b/batch/file-ingest/data/split/names_ah.csv @@ -0,0 +1,280 @@ +Glenna,Anteby +Glennie,Antee +Glennis,Antell +Glinda,Antenor +Gloria,Antenucci +Glory,Anter +Glynda,Antes +Glynis,Anthes +Golda,Anthis +Golden,Anthon +Goldie,Anthony +Gonzalo,Antich +Gordon,Antignani +Grace,Antigua +Gracia,Antila +Gracie,Antill +Graciela,Antilla +Grady,Antillon +Graham,Antinarelli +Graig,Antinore +Grant,Antinoro +Granville,Antione +Grayce,Antis +Grazyna,Antista +Greg,Antkowiak +Gregg,Antle +Gregoria,Antley +Gregorio,Antman +Gregory,Antoine +Gregory,Antolak +Greta,Antolik +Gretchen,Antolin +Gretta,Antolini +Gricelda,Antolos +Grisel,Anton +Griselda,Antona +Grover,Antonacci +Guadalupe,Antonaccio +Guadalupe,Antonakos +Gudrun,Antone +Guillermina,Antonelli +Guillermo,Antonellis +Gus,Antonello +Gussie,Antonetti +Gustavo,Antonetty +Guy,Antonia +Gwen,Antoniak +Gwenda,Antonich +Gwendolyn,Antoniewicz +Gwenn,Antonini +Gwyn,Antonio +Gwyneth,Antoniotti +Ha,Antoniou +Hae,Antonis +Hai,Antoniuk +Hailey,Antonopoulos +Hal,Antonovich +Haley,Antonsen +Halina,Antonson +Halley,Antonucci +Hallie,Antony +Han,Antos +Hana,Antosh +Hang,Antrican +Hanh,Antrikin +Hank,Antrim +Hanna,Antrobus +Hannah,Antronica +Hannelore,Anttila +Hans,Antu +Harlan,Antuna +Harland,Antunes +Harley,Antunez +Harmony,Antwi +Harold,Antwine +Harold,Anwar +Harriet,Anway +Harriett,Anyan +Harriette,Anzai +Harris,Anzaldo +Harrison,Anzaldua +Harry,Anzalone +Harvey,Anzideo +Hassan,Anzora +Hassie,Anzualda +Hattie,Anzures +Haydee,Ao +Hayden,Aoay +Hayley,Aoki +Haywood,Aono +Hazel,Apa +Heath,Apadaca +Heather,Apadoca +Hector,Apaez +Hedwig,Apalategui +Hedy,Apana +Hee,Aparicio +Heide,Aparo +Heidi,Ape +Heidy,Apel +Heike,Apela +Helaine,Apelian +Helen,Aper +Helena,Aperges +Helene,Apfel +Helga,Apgar +Hellen,Apicella +Henrietta,Apilado +Henriette,Apker +Henry,Apkin +Henry,Apking +Herb,Apland +Herbert,Apley +Heriberto,Aplin +Herlinda,Apling +Herma,Aplington +Herman,Apo +Hermelinda,Apodaca +Hermila,Apodace +Hermina,Apodoca +Hermine,Apolinar +Herminia,Apolito +Herschel,Apollo +Hershel,Apolo +Herta,Aponta +Hertha,Aponte +Hester,Apostal +Hettie,Apostol +Hiedi,App +Hien,Appana +Hilaria,Appel +Hilario,Appelbaum +Hilary,Appelgate +Hilda,Appelgren +Hilde,Appeling +Hildegard,Appell +Hildegarde,Appello +Hildred,Appelman +Hillary,Appelt +Hilma,Appenzeller +Hilton,Apperson +Hipolito,Appert +Hiram,Appia +Hiroko,Appiah +Hisako,Appl +Hoa,Apple +Hobert,Applebaum +Holley,Applebee +Holli,Appleberry +Hollie,Applebury +Hollis,Appleby +Hollis,Applegarth +Holly,Applegate +Homer,Appleman +Honey,Applen +Hong,Appleton +Hong,Applewhaite +Hope,Applewhite +Horace,Appleyard +Horacio,Applin +Hortencia,Appling +Hortense,Applonie +Hortensia,Appolonia +Hosea,Aprea +Houston,Apresa +Howard,Aprigliano +Hoyt,April +Hsiu,Aprill +Hubert,Apruzzese +Hue,Apsey +Huey,Apshire +Hugh,Apt +Hugo,Apthorpe +Hui,Apuzzi +Hulda,Apuzzo +Humberto,Apyuan +Hung,Aquas +Hunter,Aquero +Huong,Aquil +Hwa,Aquilar +Hyacinth,Aquilera +Hye,Aquilina +Hyman,Aquilino +Hyo,Aquino +Hyon,Aquirre +Hyun,Ar +Ian,Arab +Ida,Arabajian +Idalia,Arabia +Idell,Arabian +Idella,Arabie +Iesha,Aracena +Ignacia,Aradanas +Ignacio,Aragaki +Ike,Aragan +Ila,Aragao +Ilana,Aragon +Ilda,Aragones +Ileana,Aragoni +Ileen,Aragundi +Ilene,Aragus +Iliana,Arai +Illa,Araiza +Ilona,Arakaki +Ilse,Arakawa +Iluminada,Araki +Ima,Araldi +Imelda,Aramboles +Imogene,Arambuia +In,Arambula +Ina,Arambulo +India,Aramini +Indira,Aran +Inell,Arana +Ines,Aranas +Inez,Arancibia +Inga,Arand +Inge,Aranda +Ingeborg,Araneo +Inger,Arango +Ingrid,Aranjo +Inocencia,Arano +Iola,Arant +Iona,Araque +Ione,Arashiro +Ira,Arata +Ira,Arato +Iraida,Arau +Irena,Araujo +Irene,Arauz +Irina,Arave +Iris,Aravjo +Irish,Araya +Irma,Arb +Irmgard,Arballo +Irvin,Arbaugh +Irving,Arbeiter +Irwin,Arbertha +Isa,Arbetman +Isaac,Arbizo +Isabel,Arbo +Isabell,Arbogast +Isabella,Arbogust +Isabelle,Arboleda +Isadora,Arbolida +Isaiah,Arbon +Isaias,Arbour +Isaura,Arbry +Isela,Arbucci +Isiah,Arbuckle +Isidra,Arbuthnot +Isidro,Arca +Isis,Arcadipane +Ismael,Arcand +Isobel,Arcangel +Israel,Arcano +Isreal,Arcaro +Issac,Arcaute +Iva,Arce +Ivan,Arcea +Ivana,Arcega +Ivelisse,Arcement +Ivette,Arceneaux +Ivey,Arceo +Ivonne,Arch +Ivory,Archacki +Ivory,Archambault +Ivy,Archambeau +Izetta,Archambeault +Izola,Archangel +Ja,Archbell +Jacalyn,Archbold +Jacelyn,Archdale +Jacinda,Archer +Jacinta,Archey +Jacinto,Archibald +Jack,Archibeque +Jack,Archibold +Jackeline,Archie +Jackelyn,Archila diff --git a/batch/file-ingest/data/split/names_ai.csv b/batch/file-ingest/data/split/names_ai.csv new file mode 100644 index 0000000..b8d719f --- /dev/null +++ b/batch/file-ingest/data/split/names_ai.csv @@ -0,0 +1,280 @@ +Jacki,Archilla +Jackie,Archiopoli +Jackie,Archuleta +Jacklyn,Archuletta +Jackqueline,Archut +Jackson,Arcia +Jaclyn,Arciba +Jacob,Arcieri +Jacqualine,Arciga +Jacque,Arcila +Jacquelin,Arcilla +Jacqueline,Arciniega +Jacquelyn,Arcino +Jacquelyne,Arciola +Jacquelynn,Arcizo +Jacques,Arcoraci +Jacquetta,Arcos +Jacqui,Arcudi +Jacquie,Arcuo +Jacquiline,Arcuri +Jacquline,Ard +Jacqulyn,Ardaly +Jada,Ardan +Jade,Ardd +Jadwiga,Ardelean +Jae,Arden +Jae,Ardeneaux +Jaime,Ardery +Jaime,Ardinger +Jaimee,Ardion +Jaimie,Ardis +Jake,Ardito +Jaleesa,Ardizone +Jalisa,Ardizzone +Jama,Ardman +Jamaal,Ardner +Jamal,Ardoin +Jamar,Ardolino +Jame,Ardon +Jame,Ardrey +Jamee,Ardry +Jamel,Ards +James,Arduini +James,Area +Jamey,Areas +Jamey,Arebalo +Jami,Arebela +Jamie,Arechiga +Jamie,Aredondo +Jamika,Arehano +Jamila,Arehart +Jamison,Areias +Jammie,Areizaga +Jan,Arel +Jan,Arellanes +Jana,Arellano +Janae,Arelleano +Janay,Arena +Jane,Arenales +Janean,Arenas +Janee,Arenburg +Janeen,Arend +Janel,Arendale +Janell,Arendall +Janella,Arendash +Janelle,Arender +Janene,Arends +Janessa,Arendsee +Janet,Arendt +Janeth,Arendz +Janett,Arenivar +Janetta,Arenivas +Janette,Arenos +Janey,Arens +Jani,Arenson +Janice,Arenstam +Janie,Arent +Janiece,Arentz +Janina,Arenz +Janine,Areola +Janis,Ares +Janise,Aresco +Janita,Arevalo +Jann,Arevalos +Janna,Arey +Jannet,Arflack +Jannette,Arfman +Jannie,Argabright +January,Argall +Janyce,Arganbright +Jaqueline,Argandona +Jaquelyn,Argenal +Jared,Argenbright +Jarod,Argenti +Jarred,Argentieri +Jarrett,Argento +Jarrod,Argenziano +Jarvis,Argetsinger +Jasmin,Argie +Jasmine,Argiro +Jason,Argo +Jason,Argote +Jasper,Argrave +Jaunita,Argro +Javier,Argrow +Jay,Argubright +Jay,Argudin +Jaye,Argudo +Jayme,Argue +Jaymie,Arguelles +Jayna,Arguellez +Jayne,Arguello +Jayson,Argueta +Jazmin,Arguijo +Jazmine,Arguilez +Jc,Arguillo +Jean,Arguin +Jean,Argulewicz +Jeana,Argumedo +Jeane,Argust +Jeanelle,Argyle +Jeanene,Arhart +Jeanett,Arhelger +Jeanetta,Ariail +Jeanette,Ariano +Jeanice,Arias +Jeanie,Ariaza +Jeanine,Aricas +Jeanmarie,Arichabala +Jeanna,Arico +Jeanne,Aridas +Jeannetta,Arie +Jeannette,Ariel +Jeannie,Aries +Jeannine,Arietta +Jed,Arif +Jeff,Arigo +Jefferey,Arildsen +Jefferson,Arimas +Jeffery,Arimoto +Jeffie,Aring +Jeffrey,Arington +Jeffrey,Ariola +Jeffry,Aris +Jen,Arisa +Jena,Arismendez +Jenae,Arispe +Jene,Arista +Jenee,Aristide +Jenell,Aristizabal +Jenelle,Arisumi +Jenette,Arita +Jeneva,Ariyoshi +Jeni,Ariza +Jenice,Arizaga +Jenifer,Arizmendi +Jeniffer,Arizola +Jenine,Arizzi +Jenise,Arjes +Jenna,Arjona +Jennefer,Arjune +Jennell,Arkadie +Jennette,Arkell +Jenni,Arkema +Jennie,Arkenberg +Jennifer,Arkin +Jenniffer,Arking +Jennine,Arkins +Jenny,Arko +Jerald,Arkontaky +Jeraldine,Arlan +Jeramy,Arledge +Jere,Arlen +Jeremiah,Arleth +Jeremy,Arlia +Jeremy,Arline +Jeri,Arlinghaus +Jerica,Arlington +Jerilyn,Arlotta +Jerlene,Arlt +Jermaine,Arm +Jerold,Armacost +Jerome,Armada +Jeromy,Armagost +Jerrell,Arman +Jerri,Armand +Jerrica,Armando +Jerrie,Armant +Jerrod,Armantrout +Jerrold,Armas +Jerry,Armato +Jerry,Armbrester +Jesenia,Armbrister +Jesica,Armbrust +Jess,Armbruster +Jesse,Armel +Jesse,Armeli +Jessenia,Armelin +Jessi,Armen +Jessia,Armendarez +Jessica,Armendariz +Jessie,Armengol +Jessie,Arment +Jessika,Armenta +Jestine,Armenteros +Jesus,Armento +Jesus,Armentor +Jesusa,Armentrout +Jesusita,Armer +Jetta,Armes +Jettie,Armesto +Jewel,Armfield +Jewel,Armiger +Jewell,Armijo +Jewell,Armijos +Ji,Armillei +Jill,Armintrout +Jillian,Armiso +Jim,Armistead +Jimmie,Armitage +Jimmie,Armlin +Jimmy,Armocida +Jimmy,Armold +Jin,Armon +Jina,Armond +Jinny,Armor +Jo,Armour +Joan,Armout +Joan,Arms +Joana,Armson +Joane,Armstead +Joanie,Armster +Joann,Armstong +Joanna,Armstrong +Joanne,Armwood +Joannie,Army +Joaquin,Arn +Joaquina,Arnaldo +Jocelyn,Arnall +Jodee,Arnao +Jodi,Arnau +Jodie,Arnaud +Jody,Arnaudet +Jody,Arndell +Joe,Arndorfer +Joe,Arndt +Joeann,Arne +Joel,Arneberg +Joel,Arneecher +Joella,Arnell +Joelle,Arner +Joellen,Arnerich +Joesph,Arnesen +Joetta,Arneson +Joette,Arnet +Joey,Arnett +Joey,Arnette +Johana,Arney +Johanna,Arnhart +Johanne,Arnhold +John,Arnholt +John,Arnholtz +Johna,Arning +Johnathan,Arnio +Johnathon,Arniotes +Johnetta,Arnitz +Johnette,Arnn +Johnie,Arno +Johnie,Arnold +Johnna,Arnoldi +Johnnie,Arnoldy +Johnnie,Arnone +Johnny,Arnot +Johnny,Arnott +Johnsie,Arnoux +Johnson,Arnow +Joi,Arns +Joie,Arnsberger +Jolanda,Arnspiger +Joleen,Arnst diff --git a/batch/file-ingest/data/split/names_aj.csv b/batch/file-ingest/data/split/names_aj.csv new file mode 100644 index 0000000..ca700da --- /dev/null +++ b/batch/file-ingest/data/split/names_aj.csv @@ -0,0 +1,280 @@ +Jolene,Arnstein +Jolie,Arnsworth +Joline,Arnt +Jolyn,Arntson +Jolynn,Arntt +Jon,Arntz +Jon,Arntzen +Jona,Arnwine +Jonah,Arnzen +Jonas,Aro +Jonathan,Aroca +Jonathon,Arocha +Jone,Aroche +Jonell,Arocho +Jonelle,Arollo +Jong,Aromin +Joni,Aron +Jonie,Arone +Jonna,Aronhalt +Jonnie,Aronica +Jordan,Aronoff +Jordan,Aronov +Jordon,Aronow +Jorge,Aronowitz +Jose,Arons +Jose,Aronson +Josef,Aronstein +Josefa,Arora +Josefina,Arosemena +Josefine,Arostegui +Joselyn,Arouri +Joseph,Aroyo +Joseph,Arp +Josephina,Arpin +Josephine,Arpino +Josette,Arps +Josh,Arquelles +Joshua,Arquero +Joshua,Arqueta +Josiah,Arquette +Josie,Arquitt +Joslyn,Arra +Jospeh,Arraiol +Josphine,Arrambide +Josue,Arrance +Jovan,Arrand +Jovita,Arrant +Joy,Arrants +Joya,Arras +Joyce,Arrasmith +Joycelyn,Arre +Joye,Arreaga +Juan,Arredla +Juan,Arredondo +Juana,Arreguin +Juanita,Arrellano +Jude,Arrellin +Jude,Arrendell +Judi,Arrendondo +Judie,Arreola +Judith,Arrequin +Judson,Arrey +Judy,Arrez +Jule,Arrezola +Julee,Arriaga +Julene,Arriano +Jules,Arriaza +Juli,Arriazola +Julia,Arribas +Julian,Arrick +Julian,Arrieta +Juliana,Arrigo +Juliane,Arrigone +Juliann,Arrindel +Julianna,Arrington +Julianne,Arriola +Julie,Arris +Julieann,Arrisola +Julienne,Arrison +Juliet,Arritola +Julieta,Arrizaga +Julietta,Arrizola +Juliette,Arrocha +Julio,Arrocho +Julio,Arrojo +Julissa,Arroliga +Julius,Arrollo +June,Arron +Jung,Arrospide +Junie,Arrott +Junior,Arrow +Junita,Arrowood +Junko,Arrowsmith +Justa,Arroyano +Justin,Arroyd +Justin,Arroyo +Justina,Arroyos +Justine,Arruda +Jutta,Arsenault +Ka,Arseneau +Kacey,Arseneault +Kaci,Arsham +Kacie,Arslan +Kacy,Arslanian +Kai,Art +Kaila,Artale +Kaitlin,Artalejo +Kaitlyn,Arteaga +Kala,Artega +Kaleigh,Arter +Kaley,Arterberry +Kali,Arterburn +Kallie,Arterbury +Kalyn,Arters +Kam,Artez +Kamala,Arthun +Kami,Arthur +Kamilah,Arthurs +Kandace,Artiaga +Kandi,Artibee +Kandice,Artice +Kandis,Arties +Kandra,Artiga +Kandy,Artiles +Kanesha,Artinger +Kanisha,Artinian +Kara,Artis +Karan,Artison +Kareem,Artist +Kareen,Artley +Karen,Artman +Karena,Artmann +Karey,Artola +Kari,Arton +Karie,Artrip +Karima,Artry +Karin,Arts +Karina,Arturo +Karine,Artus +Karisa,Artuso +Karissa,Artz +Karl,Artzer +Karl,Aruiso +Karla,Aruizu +Karleen,Arujo +Karlene,Arunachalam +Karly,Arundel +Karlyn,Arva +Karma,Arvan +Karmen,Arvanitis +Karol,Arvay +Karole,Arvayo +Karoline,Arvelo +Karolyn,Arvesen +Karon,Arvez +Karren,Arvidson +Karri,Arvie +Karrie,Arview +Karry,Arvin +Kary,Arviso +Karyl,Arvizo +Karyn,Arvizu +Kasandra,Arwood +Kasey,Ary +Kasey,Arya +Kasha,Arzabala +Kasi,Arzaga +Kasie,Arzate +Kassandra,Arzilli +Kassie,Arzo +Kate,Arzola +Katelin,Arzt +Katelyn,Arzu +Katelynn,Asa +Katerine,Asad +Kathaleen,Asaeli +Katharina,Asai +Katharine,Asakura +Katharyn,Asal +Kathe,Asam +Katheleen,Asamoah +Katherin,Asano +Katherina,Asante +Katherine,Asar +Kathern,Asaro +Katheryn,Asato +Kathey,Asay +Kathi,Asbell +Kathie,Asberry +Kathleen,Asbill +Kathlene,Asbridge +Kathline,Asbury +Kathlyn,Asby +Kathrin,Ascencio +Kathrine,Ascensio +Kathryn,Ascenzo +Kathryne,Asch +Kathy,Aschan +Kathyrn,Aschbacher +Kati,Ascheman +Katia,Aschenbach +Katie,Aschenbrener +Katina,Aschenbrenner +Katlyn,Ascher +Katrice,Aschim +Katrina,Aschmann +Kattie,Aschoff +Katy,Ascol +Kay,Ascolese +Kayce,Asebedo +Kaycee,Asel +Kaye,Aselage +Kayla,Aseltine +Kaylee,Asen +Kayleen,Asencio +Kayleigh,Aseng +Kaylene,Asenjo +Kazuko,Asevedo +Kecia,Asfour +Keeley,Ash +Keely,Ashaf +Keena,Ashalintubbi +Keenan,Ashauer +Keesha,Ashbach +Keiko,Ashbacher +Keila,Ashbaugh +Keira,Ashbourne +Keisha,Ashbrook +Keith,Ashburn +Keith,Ashby +Keitha,Ashcraft +Keli,Ashcroft +Kelle,Ashdown +Kellee,Ashe +Kelley,Ashely +Kelley,Ashenfelter +Kelli,Asher +Kellie,Ashfield +Kelly,Ashford +Kelly,Ashing +Kellye,Ashkettle +Kelsey,Ashland +Kelsi,Ashley +Kelsie,Ashlin +Kelvin,Ashline +Kemberly,Ashlock +Ken,Ashly +Kena,Ashman +Kenda,Ashmead +Kendal,Ashmen +Kendall,Ashmore +Kendall,Ashner +Kendra,Ashpole +Kendrick,Ashraf +Keneth,Ashton +Kenia,Ashurst +Kenisha,Ashwell +Kenna,Ashwood +Kenneth,Ashworth +Kenneth,Asiedu +Kennith,Asiello +Kenny,Asif +Kent,Ask +Kenton,Askam +Kenya,Askari +Kenyatta,Aske +Kenyetta,Askegren +Kera,Asken +Keren,Askew +Keri,Askey +Kermit,Askia +Kerri,Askiew +Kerrie,Askin +Kerry,Askins +Kerry,Askland +Kerstin,Askren +Kesha,Askvig +Keshia,Askwith +Keturah,Aslam +Keva,Aslanian diff --git a/batch/file-ingest/data/split/names_ak.csv b/batch/file-ingest/data/split/names_ak.csv new file mode 100644 index 0000000..5a4d71f --- /dev/null +++ b/batch/file-ingest/data/split/names_ak.csv @@ -0,0 +1,280 @@ +Keven,Asleson +Kevin,Aslett +Kevin,Asley +Khadijah,Aslin +Khalilah,Aslinger +Kia,Asma +Kiana,Asman +Kiara,Asmar +Kiera,Asmus +Kiersten,Asmussen +Kiesha,Asner +Kieth,Asnicar +Kiley,Asp +Kim,Aspacio +Kim,Aspden +Kimber,Aspegren +Kimberely,Aspell +Kimberlee,Aspen +Kimberley,Asper +Kimberli,Asperheim +Kimberlie,Aspinall +Kimberly,Aspinwall +Kimbery,Aspley +Kimbra,Asplin +Kimi,Asplund +Kimiko,Aspri +Kina,Asquith +Kindra,Asrari +King,Assad +Kip,Assael +Kira,Assaf +Kirby,Assalone +Kirby,Assante +Kirk,Asselin +Kirsten,Asselmeier +Kirstie,Asselta +Kirstin,Assenmacher +Kisha,Assing +Kit,Assis +Kittie,Assum +Kitty,Ast +Kiyoko,Asta +Kizzie,Astacio +Kizzy,Astafan +Klara,Astarita +Korey,Aste +Kori,Asters +Kortney,Astillero +Kory,Astin +Kourtney,Astle +Kraig,Astley +Kris,Astol +Kris,Astolfi +Krishna,Aston +Krissy,Astor +Krista,Astorga +Kristal,Astorino +Kristan,Astrella +Kristeen,Astrologo +Kristel,Astrup +Kristen,Astry +Kristi,Astudillo +Kristian,Asturias +Kristie,Astwood +Kristin,Asuncion +Kristina,Aswegan +Kristine,Atala +Kristle,Atallah +Kristofer,Atamanczyk +Kristopher,Atamian +Kristy,Atanacio +Kristyn,Atay +Krysta,Atcher +Krystal,Atcheson +Krysten,Atchinson +Krystin,Atchison +Krystina,Atchity +Krystle,Atchley +Krystyna,Atcitty +Kum,Aten +Kurt,Atencio +Kurtis,Atengco +Kyla,Ater +Kyle,Ates +Kyle,Atha +Kylee,Athalone +Kylie,Athan +Kym,Athanasiou +Kymberly,Athans +Kyoko,Athas +Kyong,Athay +Kyra,Athayde +Kyung,Athearn +Lacey,Athens +Lachelle,Atherholt +Laci,Atherley +Lacie,Atherton +Lacresha,Athey +Lacy,Athmann +Lacy,Athy +Ladawn,Atienza +Ladonna,Atilano +Lady,Atiles +Lael,Atiyeh +Lahoma,Atkerson +Lai,Atkeson +Laila,Atkin +Laine,Atkins +Lajuana,Atkinson +Lakeesha,Atkison +Lakeisha,Atkisson +Lakendra,Atlas +Lakenya,Atleh +Lakesha,Atma +Lakeshia,Atmore +Lakia,Atnip +Lakiesha,Atoe +Lakisha,Aton +Lakita,Ator +Lala,Atta +Lamar,Attal +Lamonica,Attanasio +Lamont,Attard +Lan,Attaway +Lana,Atteberry +Lance,Attebery +Landon,Atteburg +Lane,Atterberry +Lane,Atterbury +Lanell,Atterson +Lanelle,Atthowe +Lanette,Attia +Lang,Attianese +Lani,Attig +Lanie,Attilio +Lanita,Attinger +Lannie,Attkisson +Lanny,Attles +Lanora,Attleson +Laquanda,Attridge +Laquita,Attwell +Lara,Attwood +Larae,Atwater +Laraine,Atwell +Laree,Atwill +Larhonda,Atwood +Larisa,Atzhorn +Larissa,Atzinger +Larita,Au +Laronda,Auala +Larraine,Aube +Larry,Aubel +Larry,Auber +Larue,Auberry +Lasandra,Aubert +Lashanda,Aubertine +Lashandra,Aubin +Lashaun,Auble +Lashaunda,Aubrecht +Lashawn,Aubrey +Lashawna,Aubry +Lashawnda,Aubuchon +Lashay,Aubut +Lashell,Auces +Lashon,Auch +Lashonda,Auchmoody +Lashunda,Auck +Lasonya,Auckerman +Latanya,Auckley +Latarsha,Auclair +Latasha,Aucoin +Latashia,Aucter +Latesha,Aud +Latia,Audain +Laticia,Audas +Latina,Audelhuk +Latisha,Audet +Latonia,Audette +Latonya,Audi +Latoria,Audia +Latosha,Audibert +Latoya,Audie +Latoyia,Audirsch +Latrice,Audrey +Latricia,Auduong +Latrina,Aue +Latrisha,Auel +Launa,Auer +Laura,Auerbach +Lauralee,Auerswald +Lauran,Aufderheide +Laure,Auffrey +Laureen,Aufiero +Laurel,Auge +Lauren,Augello +Lauren,Augenstein +Laurena,Auger +Laurence,Augeri +Laurence,Aughe +Laurene,Aughenbaugh +Lauretta,Aughtman +Laurette,Aughtry +Lauri,Augle +Laurice,Augliano +Laurie,Augsburger +Laurinda,Augspurger +Laurine,August +Lauryn,Augusta +Lavada,Augustave +Lavelle,Auguste +Lavenia,Augustin +Lavera,Augustine +Lavern,Augusto +Lavern,Augustson +Laverna,Augustus +Laverne,Augustyn +Laverne,Augustyniak +Laveta,Auila +Lavette,Auiles +Lavina,Aujla +Lavinia,Aukamp +Lavon,Auker +Lavona,Aukerman +Lavonda,Aukes +Lavone,Aul +Lavonia,Aulabaugh +Lavonna,Aulbach +Lavonne,Auld +Lawana,Aulder +Lawanda,Auldridge +Lawanna,Aulds +Lawerence,Auler +Lawrence,Auletta +Lawrence,Aull +Layla,Auls +Layne,Ault +Lazaro,Aultman +Le,Aultz +Lea,Auman +Leah,Aumann +Lean,Aumavae +Leana,Aumen +Leandra,Aumend +Leandro,Aument +Leann,Aumich +Leanna,Aumick +Leanne,Aumiller +Leanora,Aun +Leatha,Auna +Leatrice,Aune +Lecia,Aungst +Leda,Aunkst +Lee,Aupperle +Lee,Auprey +Leeann,Aurand +Leeanna,Aurelia +Leeanne,Aurelio +Leena,Aures +Leesa,Aurges +Leia,Auricchio +Leida,Aurich +Leif,Auringer +Leigh,Aurora +Leigh,Aurrichio +Leigha,Aus +Leighann,Ausbrooks +Leila,Ausburn +Leilani,Ausby +Leisa,Ausdemore +Leisha,Ausherman +Lekisha,Ausiello +Lela,Auslam +Lelah,Ausland +Leland,Auslander +Lelia,Ausley +Lemuel,Ausman +Len,Ausmus +Lena,Aust +Lenard,Austad +Lenita,Austell diff --git a/batch/file-ingest/data/split/names_al.csv b/batch/file-ingest/data/split/names_al.csv new file mode 100644 index 0000000..82d19db --- /dev/null +++ b/batch/file-ingest/data/split/names_al.csv @@ -0,0 +1,280 @@ +Lenna,Austen +Lennie,Auster +Lenny,Austerberry +Lenora,Austgen +Lenore,Austill +Leo,Austin +Leo,Austine +Leola,Austino +Leoma,Auston +Leon,Austria +Leon,Autaubo +Leona,Auten +Leonard,Auter +Leonarda,Auteri +Leonardo,Autery +Leone,Authement +Leonel,Auther +Leonia,Authur +Leonida,Autin +Leonie,Autio +Leonila,Autman +Leonor,Autobee +Leonora,Auton +Leonore,Autovino +Leontine,Autrano +Leopoldo,Autrey +Leora,Autry +Leota,Autullo +Lera,Auvil +Leroy,Auwaerter +Les,Auwarter +Lesa,Auxier +Lesha,Auxilien +Lesia,Auyer +Leslee,Auyeung +Lesley,Auyon +Lesley,Auyong +Lesli,Auzat +Leslie,Auzenne +Leslie,Auzston +Lessie,Avala +Lester,Avallone +Lester,Avalos +Leta,Avance +Letha,Avancena +Leticia,Avans +Letisha,Avansino +Letitia,Avant +Lettie,Avants +Letty,Avanzato +Levi,Avarbuch +Lewis,Avary +Lewis,Ave +Lexie,Aveado +Lezlie,Avelar +Li,Aveles +Lia,Aveline +Liana,Avelino +Liane,Avella +Lianne,Avellaneda +Libbie,Avellano +Libby,Avellar +Liberty,Avellino +Librada,Avello +Lida,Avena +Lidia,Avendano +Lien,Aveni +Lieselotte,Avenia +Ligia,Avenoso +Lila,Avent +Lili,Aver +Lilia,Avera +Lilian,Averbach +Liliana,Averbeck +Lilla,Averett +Lilli,Averette +Lillia,Averhart +Lilliam,Averill +Lillian,Averitt +Lilliana,Averitte +Lillie,Avers +Lilly,Aversa +Lily,Aversano +Lin,Avery +Lina,Averyt +Lincoln,Avetisyan +Linda,Avey +Lindsay,Avie +Lindsay,Avila +Lindsey,Avilar +Lindsey,Aviles +Lindsy,Avilez +Lindy,Avilla +Linette,Avina +Ling,Avinger +Linh,Avino +Linn,Avirett +Linnea,Avis +Linnie,Avison +Lino,Avita +Linsey,Avitabile +Linwood,Avitia +Lionel,Avner +Lisa,Avola +Lisabeth,Avolio +Lisandra,Avon +Lisbeth,Avona +Lise,Avrett +Lisette,Avril +Lisha,Aw +Lissa,Awad +Lissette,Awada +Lita,Awai +Livia,Awalt +Liz,Awbrey +Liza,Awe +Lizabeth,Awender +Lizbeth,Awkard +Lizeth,Awkward +Lizette,Awong +Lizzette,Awtrey +Lizzie,Awtry +Lloyd,Awyie +Loan,Ax +Logan,Axe +Logan,Axel +Loida,Axelrad +Lois,Axelrod +Loise,Axelsen +Lola,Axelson +Lolita,Axford +Loma,Axley +Lon,Axline +Lona,Axman +Londa,Axon +Long,Axsom +Loni,Axson +Lonna,Axt +Lonnie,Axtell +Lonnie,Axthelm +Lonny,Axtman +Lora,Axton +Loraine,Ayaia +Loralee,Ayala +Lore,Ayalla +Lorean,Ayars +Loree,Ayarza +Loreen,Aybar +Lorelei,Aycock +Loren,Aycox +Loren,Aydelott +Lorena,Aydin +Lorene,Aydlett +Lorenza,Aydt +Lorenzo,Aye +Loreta,Ayele +Loretta,Ayer +Lorette,Ayers +Lori,Ayersman +Loria,Ayhens +Loriann,Aykroid +Lorie,Ayles +Lorilee,Aylesworth +Lorina,Ayling +Lorinda,Aylock +Lorine,Aylor +Loris,Aylsworth +Lorita,Aylward +Lorna,Aymar +Lorraine,Aymond +Lorretta,Aynes +Lorri,Ayo +Lorriane,Ayola +Lorrie,Ayon +Lorrine,Ayoob +Lory,Ayotte +Lottie,Ayoub +Lou,Ayre +Lou,Ayres +Louann,Ayscue +Louanne,Aysien +Louella,Aytes +Louetta,Ayudan +Louie,Ayuso +Louie,Ayyad +Louis,Azad +Louis,Azahar +Louisa,Azapinto +Louise,Azar +Loura,Azatyan +Lourdes,Azbell +Lourie,Azbill +Louvenia,Azcona +Love,Azebedo +Lovella,Azeem +Lovetta,Azen +Lovie,Azer +Lowell,Azevedo +Loyce,Azhocar +Loyd,Azim +Lu,Azimi +Luana,Aziz +Luann,Azor +Luanna,Azore +Luanne,Azotea +Luba,Azoulay +Lucas,Azua +Luci,Azulay +Lucia,Azuma +Luciana,Azure +Luciano,Azzano +Lucie,Azzara +Lucien,Azzarella +Lucienne,Azzarito +Lucila,Azzaro +Lucile,Azznara +Lucilla,Azzopardi +Lucille,Ba +Lucina,Baab +Lucinda,Baack +Lucio,Baade +Lucius,Baadsgaard +Lucrecia,Baar +Lucretia,Baars +Lucy,Baarts +Ludie,Baas +Ludivina,Baatz +Lue,Bab +Luella,Baba +Luetta,Babat +Luigi,Babauta +Luis,Babb +Luis,Babbel +Luisa,Babbin +Luise,Babbish +Luke,Babbit +Lula,Babbitt +Lulu,Babbs +Luna,Babcock +Lupe,Babe +Lupe,Babecki +Lupita,Babel +Lura,Babena +Lurlene,Baber +Lurline,Babers +Luther,Babeu +Luvenia,Babey +Luz,Babiarz +Lyda,Babic +Lydia,Babich +Lyla,Babick +Lyle,Babicke +Lyman,Babicz +Lyn,Babikian +Lynda,Babilon +Lyndia,Babilonia +Lyndon,Babin +Lyndsay,Babine +Lyndsey,Babineau +Lynell,Babineaux +Lynelle,Babington +Lynetta,Babino +Lynette,Babinski +Lynn,Babione +Lynn,Babiracki +Lynna,Babish +Lynne,Babitsch +Lynnette,Babjeck +Lynsey,Bablak +Lynwood,Bable +Ma,Babonis +Mabel,Babrow +Mabelle,Babson +Mable,Babst +Mac,Babu +Machelle,Babula +Macie,Babyak +Mack,Baca +Mackenzie,Bacak +Macy,Bacarella diff --git a/batch/file-ingest/data/split/names_am.csv b/batch/file-ingest/data/split/names_am.csv new file mode 100644 index 0000000..ad912a6 --- /dev/null +++ b/batch/file-ingest/data/split/names_am.csv @@ -0,0 +1,280 @@ +Madalene,Bacayo +Madaline,Bacca +Madalyn,Baccam +Maddie,Baccari +Madelaine,Bacchi +Madeleine,Bacchus +Madelene,Bacco +Madeline,Baccouche +Madelyn,Baccus +Madge,Bacerra +Madie,Bach +Madison,Bacha +Madlyn,Bachan +Madonna,Bachand +Mae,Bachar +Maegan,Bachas +Mafalda,Bache +Magali,Bachelder +Magaly,Bachelor +Magan,Bacher +Magaret,Bachert +Magda,Bachhuber +Magdalen,Bachicha +Magdalena,Bachinski +Magdalene,Bachleda +Magen,Bachler +Maggie,Bachman +Magnolia,Bachmann +Mahalia,Bachmeier +Mai,Bachmeyer +Maia,Bachner +Maida,Bacho +Maile,Bachor +Maira,Bachorski +Maire,Bachrach +Maisha,Bachrodt +Maisie,Bachta +Major,Bachtel +Majorie,Bachtell +Makeda,Bachtold +Malcolm,Bachus +Malcom,Bacich +Malena,Bacigalupi +Malia,Bacigalupo +Malik,Bacik +Malika,Bacino +Malinda,Bacio +Malisa,Back +Malissa,Backbone +Malka,Backe +Mallie,Backen +Mallory,Backenstose +Malorie,Backer +Malvina,Backers +Mamie,Backes +Mammie,Backey +Man,Backfisch +Man,Backhaus +Mana,Backhuus +Manda,Backlund +Mandi,Backman +Mandie,Backmon +Mandy,Backous +Manie,Backstrom +Manual,Backues +Manuel,Backus +Manuela,Bacman +Many,Bacolor +Mao,Bacon +Maple,Bacone +Mara,Bacorn +Maragaret,Bacot +Maragret,Bacote +Maranda,Baculpo +Marc,Bacurin +Marcel,Bacus +Marcela,Bacy +Marcelene,Baczewski +Marcelina,Bad +Marceline,Badagliacca +Marcelino,Badal +Marcell,Badalamenti +Marcella,Badame +Marcelle,Badami +Marcellus,Badamo +Marcelo,Badanguio +Marcene,Badasci +Marchelle,Baddeley +Marci,Badder +Marcia,Badders +Marcie,Baddley +Marco,Baddour +Marcos,Bade +Marcus,Badeau +Marcy,Badeaux +Mardell,Baden +Maren,Badena +Marg,Badenoch +Margaret,Bader +Margareta,Badertscher +Margarete,Badey +Margarett,Badger +Margaretta,Badgero +Margarette,Badget +Margarita,Badgett +Margarite,Badgley +Margarito,Badia +Margart,Badie +Marge,Badilla +Margene,Badillo +Margeret,Badini +Margert,Badlam +Margery,Badley +Marget,Badman +Margherita,Bado +Margie,Badolato +Margit,Badon +Margo,Badoni +Margorie,Badour +Margot,Badruddin +Margret,Badua +Margrett,Badura +Marguerita,Bady +Marguerite,Badzinski +Margurite,Bae +Margy,Baehr +Marhta,Baek +Mari,Baell +Maria,Baena +Maria,Baenziger +Mariah,Baer +Mariam,Baerg +Marian,Baerga +Mariana,Baeringer +Marianela,Baerlocher +Mariann,Baerman +Marianna,Baese +Marianne,Baeskens +Mariano,Baessler +Maribel,Baetz +Maribeth,Baez +Marica,Baeza +Maricela,Baff +Maricruz,Baffa +Marie,Bafford +Mariel,Baffuto +Mariela,Bafia +Mariella,Bagan +Marielle,Bagaoisan +Marietta,Bagby +Mariette,Bagdasarian +Mariko,Bagdon +Marilee,Bagdonas +Marilou,Bageant +Marilu,Bagen +Marilyn,Bagent +Marilynn,Bagg +Marin,Bagge +Marina,Baggenstoss +Marinda,Bagger +Marine,Baggerly +Mario,Baggesen +Mario,Baggett +Marion,Baggette +Marion,Baggio +Maris,Baggott +Marisa,Baggs +Marisela,Baghdasarian +Marisha,Bagheri +Marisol,Bagi +Marissa,Baginski +Marita,Bagley +Maritza,Baglione +Marivel,Bagnall +Marjorie,Bagnaschi +Marjory,Bagnato +Mark,Bagne +Mark,Bagnell +Marketta,Bagner +Markita,Bagni +Markus,Bagnoli +Marla,Bagoyo +Marlana,Bagozzi +Marleen,Bagron +Marlen,Bagsby +Marlena,Bagshaw +Marlene,Bagu +Marlin,Bagwell +Marlin,Bagwill +Marline,Bah +Marlo,Bahadue +Marlon,Baham +Marlyn,Bahamonde +Marlys,Bahar +Marna,Bahde +Marni,Bahe +Marnie,Bahena +Marquerite,Baher +Marquetta,Bahl +Marquis,Bahler +Marquita,Bahlmann +Marquitta,Bahls +Marry,Bahm +Marsha,Bahn +Marshall,Bahner +Marshall,Bahnsen +Marta,Bahoora +Marth,Bahr +Martha,Bahri +Marti,Bahrke +Martin,Bahrmasel +Martin,Bahrs +Martina,Bahun +Martine,Bai +Marty,Baibak +Marty,Baich +Marva,Baichan +Marvel,Baier +Marvella,Baiera +Marvin,Baierl +Marvis,Baig +Marx,Baik +Mary,Bail +Mary,Bailado +Marya,Bailard +Maryalice,Baile +Maryam,Bailer +Maryann,Bailes +Maryanna,Bailey +Maryanne,Bailie +Marybelle,Bailiff +Marybeth,Bailin +Maryellen,Baillargeon +Maryetta,Baille +Maryjane,Baillet +Maryjo,Bailleu +Maryland,Baillie +Marylee,Baillio +Marylin,Bailly +Maryln,Bailon +Marylou,Bailony +Marylouise,Bailor +Marylyn,Baily +Marylynn,Baim +Maryrose,Baima +Masako,Bain +Mason,Bainard +Matha,Bainbridge +Mathew,Baine +Mathilda,Bainer +Mathilde,Baines +Matilda,Bainey +Matilde,Bains +Matt,Bainter +Matthew,Bainum +Matthew,Baio +Mattie,Baiotto +Maud,Bair +Maude,Bairam +Maudie,Baird +Maura,Baires +Maureen,Bairo +Maurice,Bairos +Maurice,Baisch +Mauricio,Baisden +Maurine,Baise +Maurita,Baisey +Mauro,Baish +Mavis,Baisley +Max,Baison +Maxie,Baisten +Maxima,Baites +Maximina,Baitg +Maximo,Baitner +Maxine,Baity +Maxwell,Baiz +May,Baiza +Maya,Baize +Maybell,Baizer +Maybelle,Baj diff --git a/batch/file-ingest/data/split/names_an.csv b/batch/file-ingest/data/split/names_an.csv new file mode 100644 index 0000000..ad1b0dc --- /dev/null +++ b/batch/file-ingest/data/split/names_an.csv @@ -0,0 +1,280 @@ +Maye,Bajaj +Mayme,Bajdas +Maynard,Bajek +Mayola,Bajko +Mayra,Bajorek +Mazie,Bajwa +Mckenzie,Bak +Mckinley,Baka +Meagan,Bakalar +Meaghan,Bakalars +Mechelle,Bakaler +Meda,Bakanauskas +Mee,Bake +Meg,Bakeley +Megan,Bakemeier +Meggan,Baken +Meghan,Baker +Meghann,Bakerville +Mei,Bakes +Mel,Bakewell +Melaine,Bakey +Melani,Bakhshian +Melania,Bakios +Melanie,Bakkala +Melany,Bakke +Melba,Bakken +Melda,Bakker +Melia,Bakko +Melida,Bakkum +Melina,Bakley +Melinda,Baklund +Melisa,Bakos +Melissa,Bakowski +Melissia,Bakr +Melita,Baksh +Mellie,Bakshi +Mellisa,Baksi +Mellissa,Bakst +Melodee,Bakula +Melodi,Bal +Melodie,Bala +Melody,Balaam +Melonie,Balaban +Melony,Baladejo +Melva,Balado +Melvin,Balafoutas +Melvin,Balagtas +Melvina,Balak +Melynda,Balancia +Mendy,Balandran +Mercedes,Balangatan +Mercedez,Balanoff +Mercy,Balas +Meredith,Balasa +Meri,Balasco +Merideth,Balash +Meridith,Balaski +Merilyn,Balasko +Merissa,Balassi +Merle,Balasubramani +Merle,Balay +Merlene,Balaz +Merlin,Balazs +Merlyn,Balbas +Merna,Balbi +Merri,Balbin +Merrie,Balboa +Merrilee,Balboni +Merrill,Balbontin +Merrill,Balbuena +Merry,Balcazar +Mertie,Balceiro +Mervin,Balcer +Meryl,Balcerzak +Meta,Balch +Mi,Balchunas +Mia,Balcitis +Mica,Balck +Micaela,Balckburn +Micah,Balckwell +Micah,Balcom +Micha,Balcomb +Michael,Balcorta +Michael,Balcos +Michaela,Bald +Michaele,Balda +Michal,Baldacchino +Michal,Baldacci +Michale,Baldasaro +Micheal,Baldassano +Micheal,Baldassara +Michel,Baldassare +Michel,Baldassarre +Michele,Baldauf +Michelina,Balde +Micheline,Baldearena +Michell,Baldelli +Michelle,Balden +Michiko,Baldenegro +Mickey,Balder +Mickey,Balderama +Micki,Balderas +Mickie,Balderrama +Miesha,Balderree +Migdalia,Balderson +Mignon,Balderston +Miguel,Baldi +Miguelina,Balding +Mika,Baldinger +Mikaela,Baldini +Mike,Baldino +Mike,Baldivia +Mikel,Baldiviez +Miki,Baldo +Mikki,Baldock +Mila,Baldomero +Milagro,Baldon +Milagros,Baldonado +Milan,Baldor +Milda,Baldos +Mildred,Baldree +Miles,Baldrey +Milford,Baldridge +Milissa,Baldrige +Millard,Balducci +Millicent,Balduf +Millie,Baldus +Milly,Balduzzi +Milo,Baldwin +Milton,Baldwyn +Mimi,Baldy +Min,Baldyga +Mina,Bale +Minda,Balensiefen +Mindi,Balent +Mindy,Balentine +Minerva,Balerio +Ming,Bales +Minh,Balestra +Minh,Balestrieri +Minna,Balette +Minnie,Baley +Minta,Balezentis +Miquel,Balfany +Mira,Balfe +Miranda,Balford +Mireille,Balfour +Mirella,Balhorn +Mireya,Bali +Miriam,Balian +Mirian,Balich +Mirna,Balick +Mirta,Balicki +Mirtha,Baliga +Misha,Baligod +Miss,Balin +Missy,Balint +Misti,Balis +Mistie,Balish +Misty,Balistreri +Mitch,Balistrieri +Mitchel,Balitas +Mitchell,Balius +Mitchell,Balk +Mitsue,Balkcom +Mitsuko,Balke +Mittie,Balkey +Mitzi,Balkin +Mitzie,Balko +Miyoko,Balkus +Modesta,Ball +Modesto,Balla +Mohamed,Balladares +Mohammad,Ballagas +Mohammed,Ballagh +Moira,Ballam +Moises,Ballan +Mollie,Ballance +Molly,Ballantine +Mona,Ballantyne +Monet,Ballar +Monica,Ballard +Monika,Ballas +Monique,Ballato +Monnie,Balle +Monroe,Ballejos +Monserrate,Ballek +Monte,Ballen +Monty,Ballena +Moon,Ballengee +Mora,Ballenger +Morgan,Ballensky +Morgan,Ballentine +Moriah,Baller +Morris,Ballerini +Morton,Balles +Mose,Ballestas +Moses,Ballester +Moshe,Ballestero +Mozell,Ballesteros +Mozella,Ballesterous +Mozelle,Balletta +Mui,Balletto +Muoi,Ballew +Muriel,Balley +Murray,Ballez +My,Balleza +Myesha,Balli +Myles,Balliet +Myong,Balliett +Myra,Balliew +Myriam,Ballif +Myrl,Ballin +Myrle,Ballina +Myrna,Balling +Myron,Ballinger +Myrta,Ballintyn +Myrtice,Ballman +Myrtie,Ballmann +Myrtis,Ballmer +Myrtle,Ballog +Myung,Ballon +Na,Balloon +Nada,Ballou +Nadene,Ballow +Nadia,Ballowe +Nadine,Ballreich +Naida,Balls +Nakesha,Balluch +Nakia,Ballweg +Nakisha,Bally +Nakita,Balm +Nam,Balmaceda +Nan,Balmer +Nana,Balmes +Nancee,Balmir +Nancey,Balmores +Nanci,Balmos +Nancie,Balnis +Nancy,Balo +Nanette,Balock +Nannette,Balog +Nannie,Balogh +Naoma,Balogun +Naomi,Balok +Napoleon,Balon +Narcisa,Balonek +Natacha,Balow +Natalia,Balowski +Natalie,Baloy +Natalya,Balque +Natasha,Balsam +Natashia,Balsamo +Nathalie,Balsano +Nathan,Balser +Nathanael,Balsiger +Nathanial,Balsis +Nathaniel,Balsley +Natisha,Balson +Natividad,Balster +Natosha,Baltazar +Neal,Baltazor +Necole,Balter +Ned,Baltes +Neda,Balthazar +Nedra,Balthazor +Neely,Balthrop +Neida,Baltierra +Neil,Baltimore +Nelda,Baltodano +Nelia,Balton +Nelida,Baltrip +Nell,Baltruweit +Nella,Baltz +Nelle,Baltzell +Nellie,Baltzer +Nelly,Baltzley +Nelson,Balvanz +Nena,Balwin +Nenita,Balwinski diff --git a/batch/file-ingest/data/split/names_ao.csv b/batch/file-ingest/data/split/names_ao.csv new file mode 100644 index 0000000..4047dea --- /dev/null +++ b/batch/file-ingest/data/split/names_ao.csv @@ -0,0 +1,280 @@ +Neoma,Balyeat +Neomi,Balza +Nereida,Balzano +Nerissa,Balzarine +Nery,Balzarini +Nestor,Balzer +Neta,Balzotti +Nettie,Bamba +Neva,Bambace +Nevada,Bambach +Neville,Bambaci +Newton,Bambacigno +Nga,Bambas +Ngan,Bambeck +Ngoc,Bambenek +Nguyet,Bamber +Nia,Bamberg +Nichelle,Bamberger +Nichol,Bambhrolia +Nicholas,Bambino +Nichole,Bambrick +Nicholle,Bamburg +Nick,Bame +Nicki,Bamfield +Nickie,Bamford +Nickolas,Bamforth +Nickole,Bammon +Nicky,Ban +Nicky,Banaag +Nicol,Banach +Nicola,Banahan +Nicolas,Banales +Nicolasa,Banana +Nicole,Banas +Nicolette,Banasiak +Nicolle,Banaszak +Nida,Banaszek +Nidia,Banbury +Niesha,Bance +Nieves,Banchero +Nigel,Bancks +Niki,Banco +Nikia,Bancourt +Nikita,Bancroft +Nikki,Band +Nikole,Banda +Nila,Bandanza +Nilda,Bandarra +Nilsa,Bandasak +Nina,Bandel +Ninfa,Bandemer +Nisha,Banderas +Nita,Bandin +Noah,Bandle +Noble,Bandley +Nobuko,Bandt +Noe,Banducci +Noel,Bandulin +Noel,Bandura +Noelia,Bandy +Noella,Bandyk +Noelle,Bane +Noemi,Banecker +Nohemi,Banegas +Nola,Banek +Nolan,Banerjee +Noma,Banerji +Nona,Banes +Nora,Banet +Norah,Baney +Norbert,Banez +Norberto,Banfield +Noreen,Banfill +Norene,Bang +Noriko,Bangert +Norine,Banghart +Norma,Bangle +Norman,Bangs +Norman,Bangura +Normand,Banh +Norris,Bania +Nova,Baniaga +Novella,Banick +Nu,Banik +Nubia,Banis +Numbers,Banister +Numbers,Bank +Nydia,Bankard +Nyla,Banke +Obdulia,Bankemper +Ocie,Banker +Octavia,Bankert +Octavio,Bankes +Oda,Bankey +Odelia,Bankhead +Odell,Banko +Odell,Bankos +Odessa,Bankowski +Odette,Banks +Odilia,Bankson +Odis,Bankston +Ofelia,Bann +Ok,Bannan +Ola,Banner +Olen,Bannerman +Olene,Bannett +Oleta,Banning +Olevia,Bannister +Olga,Bannon +Olimpia,Bannowsky +Olin,Banome +Olinda,Banos +Oliva,Banowetz +Olive,Banowski +Oliver,Bansal +Olivia,Bansbach +Ollie,Banse +Ollie,Bansmer +Olympia,Banta +Oma,Bantay +Omar,Banter +Omega,Banther +Omer,Bantillan +Ona,Bantin +Oneida,Banton +Onie,Bantug +Onita,Bantz +Opal,Banuelos +Ophelia,Banvelos +Ora,Banville +Oralee,Banwarth +Oralia,Banwell +Oren,Banyas +Oretha,Banzhaf +Orlando,Baoloy +Orpha,Bapties +Orval,Baptise +Orville,Baptist +Oscar,Baptista +Oscar,Baptiste +Ossie,Baque +Osvaldo,Baquero +Oswaldo,Baquet +Otelia,Baquiran +Otha,Bar +Otha,Bara +Otilia,Baraban +Otis,Barabas +Otto,Barabin +Ouida,Baraby +Owen,Baracani +Ozell,Barach +Ozella,Barad +Ozie,Baradi +Pa,Baragan +Pablo,Baragar +Page,Barager +Paige,Baragona +Palma,Barahana +Palmer,Barahona +Palmira,Barajas +Pam,Barajos +Pamala,Barak +Pamela,Barakat +Pamelia,Baral +Pamella,Baran +Pamila,Baranga +Pamula,Baranick +Pandora,Baranoski +Pansy,Baranovic +Paola,Baranow +Paris,Baranowski +Paris,Baranski +Parker,Baransky +Parthenia,Baras +Particia,Barasch +Pasquale,Barash +Pasty,Baratta +Pat,Baratto +Pat,Baraw +Patience,Baray +Patria,Barayuga +Patrica,Barb +Patrice,Barba +Patricia,Barbadillo +Patricia,Barbagallo +Patrick,Barbagelata +Patrick,Barbaglia +Patrina,Barbalich +Patsy,Barban +Patti,Barbano +Pattie,Barbar +Patty,Barbara +Paul,Barbare +Paul,Barbaria +Paula,Barbarin +Paulene,Barbarino +Pauletta,Barbarito +Paulette,Barbaro +Paulina,Barbati +Pauline,Barbato +Paulita,Barbaza +Paz,Barbe +Pearl,Barbeau +Pearle,Barbee +Pearlene,Barbella +Pearlie,Barben +Pearline,Barber +Pearly,Barbera +Pedro,Barberi +Peg,Barberian +Peggie,Barberio +Peggy,Barberis +Pei,Barbero +Penelope,Barberr +Penney,Barbetta +Penni,Barbian +Pennie,Barbie +Penny,Barbier +Percy,Barbiere +Perla,Barbieri +Perry,Barbin +Perry,Barbini +Pete,Barbish +Peter,Barbo +Peter,Barbone +Petra,Barbor +Petrina,Barbosa +Petronila,Barbot +Phebe,Barbour +Phil,Barboza +Philip,Barbre +Phillip,Barbrick +Phillis,Barbu +Philomena,Barbur +Phoebe,Barbuto +Phung,Barby +Phuong,Barca +Phylicia,Barcello +Phylis,Barcellos +Phyliss,Barcelo +Phyllis,Barcelona +Pia,Barcena +Piedad,Barcenas +Pierre,Barch +Pilar,Barchacky +Ping,Barchick +Pinkie,Barchus +Piper,Barcia +Pok,Barcik +Polly,Barck +Porfirio,Barclay +Porsche,Barcley +Porsha,Barcliff +Porter,Barclift +Portia,Barco +Precious,Barcomb +Preston,Barcroft +Pricilla,Barcus +Prince,Barczak +Princess,Bard +Priscila,Barda +Priscilla,Bardach +Providencia,Bardales +Prudence,Barde +Pura,Bardeen +Qiana,Bardell +Queen,Barden +Queenie,Bardes +Quentin,Bardill +Quiana,Bardin +Quincy,Bardis +Quinn,Bardney +Quinn,Bardo +Quintin,Bardon +Quinton,Bardoner +Quyen,Bardos +Rachael,Bardsley +Rachal,Bardwell +Racheal,Bare diff --git a/batch/file-ingest/data/split/names_ap.csv b/batch/file-ingest/data/split/names_ap.csv new file mode 100644 index 0000000..feb7bdf --- /dev/null +++ b/batch/file-ingest/data/split/names_ap.csv @@ -0,0 +1,280 @@ +Rachel,Barefield +Rachele,Barefoot +Rachell,Bareford +Rachelle,Bareilles +Racquel,Bareis +Rae,Barela +Raeann,Barella +Raelene,Baremore +Rafael,Barends +Rafaela,Barentine +Raguel,Barer +Raina,Barera +Raisa,Bares +Raleigh,Baresi +Ralph,Barett +Ramiro,Barette +Ramon,Barff +Ramona,Barfield +Ramonita,Barfknecht +Rana,Barfoot +Ranae,Barfuss +Randa,Barg +Randal,Barga +Randall,Barganier +Randee,Bargar +Randell,Bargas +Randi,Barge +Randolph,Bargen +Randy,Barger +Randy,Bargeron +Ranee,Bargerstock +Raphael,Barges +Raquel,Barginear +Rashad,Bargmann +Rasheeda,Bargo +Rashida,Bargstadt +Raul,Barham +Raven,Barhorst +Ray,Barhydt +Ray,Bari +Raye,Baria +Rayford,Barias +Raylene,Baribeau +Raymon,Barich +Raymond,Barick +Raymond,Barickman +Raymonde,Baridon +Raymundo,Barie +Rayna,Barientos +Rea,Baril +Reagan,Barile +Reanna,Barill +Reatha,Barillari +Reba,Barillaro +Rebbeca,Barillas +Rebbecca,Barillo +Rebeca,Barimah +Rebecca,Baringer +Rebecka,Barino +Rebekah,Bario +Reda,Barios +Reed,Baris +Reena,Barish +Refugia,Barjas +Refugio,Barjenbruch +Refugio,Bark +Regan,Barkalow +Regena,Barkan +Regenia,Barkdoll +Reggie,Barkdull +Regina,Barke +Reginald,Barkema +Regine,Barken +Reginia,Barkenhagen +Reid,Barker +Reiko,Barkes +Reina,Barket +Reinaldo,Barkett +Reita,Barkhimer +Rema,Barkhurst +Remedios,Barkie +Remona,Barkins +Rena,Barkle +Renae,Barkley +Renaldo,Barklow +Renata,Barkman +Renate,Barko +Renato,Barks +Renay,Barksdale +Renda,Barkus +Rene,Barlage +Rene,Barlak +Renea,Barlau +Renee,Barlett +Renetta,Barletta +Renita,Barlette +Renna,Barley +Ressie,Barlip +Reta,Barlock +Retha,Barlow +Retta,Barlowe +Reuben,Barlup +Reva,Barman +Rex,Barmer +Rey,Barmes +Reyes,Barmettler +Reyna,Barmore +Reynalda,Barn +Reynaldo,Barna +Rhea,Barnaba +Rheba,Barnaby +Rhett,Barnacle +Rhiannon,Barnak +Rhoda,Barnar +Rhona,Barnard +Rhonda,Barnas +Ria,Barnathan +Ricarda,Barncastle +Ricardo,Barndt +Rich,Barne +Richard,Barnebey +Richard,Barnell +Richelle,Barner +Richie,Barners +Rick,Barnes +Rickey,Barness +Ricki,Barnet +Rickie,Barnett +Rickie,Barnette +Ricky,Barney +Rico,Barnfield +Rigoberto,Barnhardt +Rikki,Barnhart +Riley,Barnhill +Rima,Barnhouse +Rina,Barnhurst +Risa,Barnick +Rita,Barnicle +Riva,Barninger +Rivka,Barno +Rob,Barnoski +Robbi,Barns +Robbie,Barnscater +Robbie,Barnt +Robbin,Barnthouse +Robby,Barnum +Robbyn,Barnwell +Robena,Baro +Robert,Barocio +Robert,Baroldy +Roberta,Baron +Roberto,Barona +Roberto,Barone +Robin,Baroni +Robin,Baronne +Robt,Baroody +Robyn,Baros +Rocco,Barquera +Rochel,Barr +Rochell,Barra +Rochelle,Barrack +Rocio,Barraclough +Rocky,Barraco +Rod,Barragan +Roderick,Barrale +Rodger,Barran +Rodney,Barranca +Rodolfo,Barranco +Rodrick,Barranger +Rodrigo,Barras +Rogelio,Barrasa +Roger,Barratt +Roland,Barraz +Rolanda,Barraza +Rolande,Barre +Rolando,Barreca +Rolf,Barreda +Rolland,Barredo +Roma,Barree +Romaine,Barreira +Roman,Barreiro +Romana,Barrell +Romelia,Barren +Romeo,Barrena +Romona,Barreneche +Ron,Barrentine +Rona,Barrer +Ronald,Barrera +Ronald,Barreras +Ronda,Barrero +Roni,Barresi +Ronna,Barret +Ronni,Barrete +Ronnie,Barreto +Ronnie,Barrett +Ronny,Barretta +Roosevelt,Barrette +Rory,Barretto +Rory,Barria +Rosa,Barriault +Rosalba,Barribeau +Rosalee,Barricelli +Rosalia,Barrick +Rosalie,Barrickman +Rosalina,Barrie +Rosalind,Barrieau +Rosalinda,Barrientes +Rosaline,Barrientez +Rosalva,Barrientos +Rosalyn,Barrier +Rosamaria,Barriere +Rosamond,Barries +Rosana,Barriga +Rosann,Barrigan +Rosanna,Barriger +Rosanne,Barrile +Rosaria,Barrilleaux +Rosario,Barrineau +Rosario,Barriner +Rosaura,Barringer +Roscoe,Barrington +Rose,Barrio +Roseann,Barrios +Roseanna,Barris +Roseanne,Barrish +Roselee,Barritt +Roselia,Barro +Roseline,Barrocas +Rosella,Barrois +Roselle,Barrom +Roselyn,Barron +Rosemarie,Barros +Rosemary,Barroso +Rosena,Barrott +Rosenda,Barrow +Rosendo,Barrowman +Rosetta,Barrows +Rosette,Barrs +Rosia,Barrus +Rosie,Barry +Rosina,Barryman +Rosio,Bars +Rosita,Barsalou +Roslyn,Barsamian +Ross,Barsanti +Rossana,Barscewski +Rossie,Barsch +Rosy,Barschdoor +Rowena,Barsegyan +Roxana,Barsh +Roxane,Barshaw +Roxann,Barski +Roxanna,Barsky +Roxanne,Barsness +Roxie,Barson +Roxy,Barsotti +Roy,Barsoum +Roy,Barstad +Royal,Barstow +Royce,Barsuhn +Royce,Barswell +Rozanne,Bart +Rozella,Barta +Ruben,Bartamian +Rubi,Bartash +Rubie,Bartberger +Rubin,Bartch +Ruby,Bartczak +Rubye,Barte +Rudolf,Bartee +Rudolph,Bartek +Rudy,Bartel +Rudy,Bartell +Rueben,Bartels +Rufina,Bartelson +Rufus,Bartelt +Rupert,Bartenfield +Russ,Barter +Russel,Barters +Russell,Bartgis diff --git a/batch/file-ingest/data/split/names_aq.csv b/batch/file-ingest/data/split/names_aq.csv new file mode 100644 index 0000000..f3678e9 --- /dev/null +++ b/batch/file-ingest/data/split/names_aq.csv @@ -0,0 +1,280 @@ +Russell,Barth +Rusty,Bartha +Ruth,Barthe +Rutha,Barthel +Ruthann,Barthelemy +Ruthanne,Barthell +Ruthe,Barthelman +Ruthie,Barthelmes +Ryan,Barthen +Ryan,Barthlow +Ryann,Barthol +Sabina,Barthold +Sabine,Bartholemew +Sabra,Bartholf +Sabrina,Bartholic +Sacha,Bartholomay +Sachiko,Bartholomeu +Sade,Bartholomew +Sadie,Bartholow +Sadye,Bartimus +Sage,Bartin +Sal,Bartkiewicz +Salena,Bartko +Salina,Bartkowiak +Salley,Bartkowski +Sallie,Bartkus +Sally,Bartl +Salome,Bartle +Salvador,Bartlebaugh +Salvatore,Bartles +Sam,Bartleson +Sam,Bartlet +Samantha,Bartlett +Samara,Bartlette +Samatha,Bartley +Samella,Bartling +Samira,Bartlome +Sammie,Bartlone +Sammie,Bartlow +Sammy,Bartman +Sammy,Bartmes +Samual,Bartmess +Samuel,Bartnett +Samuel,Bartnick +Sana,Bartnik +Sanda,Barto +Sandee,Bartol +Sandi,Bartoldus +Sandie,Bartolet +Sandra,Bartoletti +Sandy,Bartoli +Sandy,Bartolini +Sanford,Bartolo +Sang,Bartolome +Sang,Bartolomei +Sanjuana,Bartolomeo +Sanjuanita,Bartolomucci +Sanora,Bartolone +Santa,Bartolotta +Santana,Bartolotto +Santiago,Barton +Santina,Bartone +Santo,Bartos +Santos,Bartosch +Santos,Bartosh +Sara,Bartosiak +Sarah,Bartosiewicz +Sarai,Bartosik +Saran,Bartosz +Sari,Bartoszek +Sarina,Bartow +Sarita,Bartram +Sasha,Bartron +Saturnina,Bartrop +Sau,Bartrum +Saul,Barts +Saundra,Bartsch +Savanna,Bartucca +Savannah,Bartucci +Scarlet,Bartula +Scarlett,Bartunek +Scot,Bartus +Scott,Bartush +Scott,Bartuska +Scottie,Bartylla +Scottie,Bartz +Scotty,Baruch +Sean,Barufaldi +Sean,Baruffa +Season,Baruffi +Sebastian,Barus +Sebrina,Barut +See,Baruth +Seema,Barvick +Selena,Barvosa +Selene,Barwell +Selina,Barwick +Selma,Bary +Sena,Barz +Senaida,Barze +September,Barzey +Serafina,Basa +Serena,Basaldua +Sergio,Basanta +Serina,Basara +Serita,Basbas +Seth,Bascas +Setsuko,Bascetta +Seymour,Basch +Sha,Bascle +Shad,Basco +Shae,Bascom +Shaina,Bascomb +Shakia,Bascombe +Shakira,Basden +Shakita,Base +Shala,Basehore +Shalanda,Basel +Shalon,Baseler +Shalonda,Baseley +Shameka,Baselice +Shamika,Baseman +Shan,Basemore +Shana,Basey +Shanae,Basford +Shanda,Basgall +Shandi,Bash +Shandra,Basha +Shane,Basham +Shane,Bashara +Shaneka,Bashaw +Shanel,Basher +Shanell,Bashford +Shanelle,Bashi +Shani,Bashinelli +Shanice,Bashir +Shanika,Bashline +Shaniqua,Bashor +Shanita,Bashore +Shanna,Basich +Shannan,Basil +Shannon,Basila +Shannon,Basile +Shanon,Basiliere +Shanta,Basilio +Shantae,Basilone +Shantay,Basinger +Shante,Basini +Shantel,Basinski +Shantell,Basista +Shantelle,Baskas +Shanti,Baskerville +Shaquana,Basket +Shaquita,Baskett +Shara,Baskette +Sharan,Baskin +Sharda,Baskind +Sharee,Baskins +Sharell,Baskow +Sharen,Basler +Shari,Basley +Sharice,Basner +Sharie,Basnett +Sharika,Basnight +Sharilyn,Basom +Sharita,Bason +Sharla,Basone +Sharleen,Basora +Sharlene,Basore +Sharmaine,Basque +Sharolyn,Basques +Sharon,Basquez +Sharonda,Bass +Sharri,Bassage +Sharron,Bassali +Sharyl,Bassani +Sharyn,Bassano +Shasta,Basse +Shaun,Bassel +Shaun,Basset +Shauna,Bassett +Shaunda,Bassette +Shaunna,Bassetti +Shaunta,Bassford +Shaunte,Bassham +Shavon,Bassi +Shavonda,Bassil +Shavonne,Bassin +Shawana,Bassiti +Shawanda,Bassler +Shawanna,Basso +Shawn,Bassolino +Shawn,Bassuk +Shawna,Bast +Shawnda,Basta +Shawnee,Bastain +Shawnna,Bastarache +Shawnta,Bastardi +Shay,Bastedo +Shayla,Basten +Shayna,Baster +Shayne,Bastian +Shayne,Bastianelli +Shea,Bastic +Sheba,Bastick +Sheena,Bastida +Sheila,Bastidas +Sheilah,Bastidos +Shela,Bastien +Shelba,Bastilla +Shelby,Bastille +Shelby,Bastin +Sheldon,Bastine +Shelia,Baston +Shella,Bastone +Shelley,Bastos +Shelli,Bastow +Shellie,Bastress +Shelly,Bastura +Shelton,Basu +Shemeka,Basua +Shemika,Basulto +Shena,Basurto +Shenika,Baswell +Shenita,Basye +Shenna,Batala +Shera,Batalla +Sheree,Batalona +Sherell,Batara +Sheri,Batarse +Sherice,Batas +Sheridan,Batch +Sherie,Batchelder +Sherika,Batcheller +Sherill,Batchellor +Sherilyn,Batchelor +Sherise,Batcher +Sherita,Batdorf +Sherlene,Bate +Sherley,Batel +Sherly,Bateman +Sherlyn,Bater +Sherman,Baters +Sheron,Bates +Sherrell,Batesole +Sherri,Bateson +Sherrie,Batey +Sherril,Bath +Sherrill,Bathe +Sherron,Bathke +Sherry,Bathrick +Sherryl,Bathurst +Sherwood,Batie +Shery,Batimon +Sheryl,Batis +Sheryll,Batista +Shiela,Batiste +Shila,Batistich +Shiloh,Batiz +Shin,Batkin +Shira,Batko +Shirely,Batley +Shirl,Batliner +Shirlee,Batlis +Shirleen,Batlle +Shirlene,Batman +Shirley,Baton +Shirley,Bator +Shirly,Batra +Shizue,Batres +Shizuko,Batrez +Shon,Batrich +Shona,Batrum +Shonda,Batson +Shondra,Batt +Shonna,Batta +Shonta,Battaglia +Shoshana,Battaglini +Shu,Battaglino +Shyla,Battani diff --git a/batch/file-ingest/data/split/names_ar.csv b/batch/file-ingest/data/split/names_ar.csv new file mode 100644 index 0000000..c5462b3 --- /dev/null +++ b/batch/file-ingest/data/split/names_ar.csv @@ -0,0 +1,280 @@ +Sibyl,Batte +Sid,Battee +Sidney,Batteen +Sidney,Batteiger +Sierra,Batten +Signe,Battenfield +Sigrid,Battenhouse +Silas,Batter +Silva,Batterman +Silvana,Batters +Silvia,Battersby +Sima,Battershell +Simon,Batterson +Simona,Batterton +Simone,Battey +Simonne,Battiata +Sina,Battiato +Sindy,Battie +Siobhan,Battiest +Sirena,Battig +Siu,Battin +Sixta,Battino +Skye,Battis +Slyvia,Battista +So,Battiste +Socorro,Battisti +Sofia,Battistini +Soila,Battisto +Sol,Battistone +Sol,Battistoni +Solange,Battko +Soledad,Battle +Solomon,Battles +Somer,Batto +Sommer,Batton +Son,Batts +Son,Battson +Sona,Battuello +Sondra,Batty +Song,Batun +Sonia,Baty +Sonja,Batz +Sonny,Batzer +Sonya,Batzli +Soo,Batzri +Sook,Bau +Soon,Baublitz +Sophia,Bauce +Sophie,Bauch +Soraya,Baucher +Sparkle,Bauchspies +Spencer,Baucom +Spring,Baucum +Stacee,Bauder +Stacey,Baudino +Stacey,Baudler +Staci,Baudoin +Stacia,Baudry +Stacie,Bauer +Stacy,Bauerkemper +Stacy,Bauerle +Stan,Bauerlein +Stanford,Bauermeister +Stanley,Bauernfeind +Stanton,Bauers +Star,Baugatz +Starla,Baugess +Starr,Baugh +Stasia,Baugham +Stefan,Baughan +Stefani,Baugher +Stefania,Baughey +Stefanie,Baughman +Stefany,Baughn +Steffanie,Bauguess +Stella,Baugus +Stepanie,Bauknecht +Stephaine,Bauknight +Stephan,Baul +Stephane,Baulch +Stephani,Bault +Stephania,Baum +Stephanie,Bauman +Stephany,Baumann +Stephen,Baumbach +Stephen,Baumberger +Stephenie,Baumbusch +Stephine,Baumeister +Stephnie,Baumer +Sterling,Baumert +Steve,Baumfalk +Steven,Baumgard +Steven,Baumgardner +Stevie,Baumgardt +Stevie,Baumgarn +Stewart,Baumgarner +Stormy,Baumgart +Stuart,Baumgartel +Su,Baumgarten +Suanne,Baumgarter +Sudie,Baumgartner +Sue,Baumhoer +Sueann,Baumiester +Suellen,Baumkirchner +Suk,Baumler +Sulema,Baumli +Sumiko,Baumohl +Summer,Baun +Sun,Baune +Sunday,Baunleuang +Sung,Baur +Sung,Baurer +Sunni,Baures +Sunny,Baus +Sunshine,Bausch +Susan,Bauserman +Susana,Bauske +Susann,Bausley +Susanna,Bausman +Susannah,Bauswell +Susanne,Bautch +Susie,Baute +Susy,Bautista +Suzan,Bautiste +Suzann,Bautz +Suzanna,Bauza +Suzanne,Bava +Suzette,Bavard +Suzi,Bavaro +Suzie,Bavelas +Suzy,Baver +Svetlana,Baves +Sybil,Bavier +Syble,Bavzee +Sydney,Bawa +Sydney,Bawany +Sylvester,Bawcombe +Sylvia,Bawcum +Sylvie,Bawden +Synthia,Bawek +Syreeta,Bawer +Ta,Bawks +Tabatha,Bawner +Tabetha,Bax +Tabitha,Baxa +Tad,Baxendale +Tai,Baxi +Taina,Baxley +Taisha,Baxter +Tajuana,Baxtor +Takako,Bay +Takisha,Bayala +Talia,Bayani +Talisha,Bayard +Talitha,Bayardo +Tam,Bayas +Tama,Baydal +Tamala,Bayer +Tamar,Bayerl +Tamara,Bayers +Tamatha,Bayes +Tambra,Bayete +Tameika,Baygents +Tameka,Bayhonan +Tamekia,Bayird +Tamela,Bayle +Tamera,Bayles +Tamesha,Bayless +Tami,Bayley +Tamica,Bayliff +Tamie,Baylis +Tamika,Bayliss +Tamiko,Baylock +Tamisha,Baylon +Tammara,Baylor +Tammera,Bayly +Tammi,Bayman +Tammie,Baymon +Tammy,Bayn +Tamra,Baynard +Tana,Bayne +Tandra,Baynes +Tandy,Baynham +Taneka,Bayon +Tanesha,Bayona +Tangela,Bayot +Tania,Bayouth +Tanika,Bays +Tanisha,Baysden +Tanja,Baysinger +Tanna,Baysmore +Tanner,Bayt +Tanya,Bayton +Tara,Baytos +Tarah,Bayuk +Taren,Bayus +Tari,Baza +Tarra,Bazaldua +Tarsha,Bazan +Taryn,Bazar +Tasha,Bazarte +Tashia,Bazata +Tashina,Baze +Tasia,Bazel +Tatiana,Bazelais +Tatum,Bazemore +Tatyana,Bazer +Taunya,Bazil +Tawana,Bazile +Tawanda,Bazin +Tawanna,Bazinet +Tawna,Bazner +Tawny,Bazydlo +Tawnya,Bazylewicz +Taylor,Bazzanella +Taylor,Bazzano +Tayna,Bazzel +Ted,Bazzell +Teddy,Bazzi +Teena,Bazzle +Tegan,Be +Teisha,Bea +Telma,Beaber +Temeka,Beabout +Temika,Beach +Tempie,Beacham +Temple,Beachamp +Tena,Beachel +Tenesha,Beachell +Tenisha,Beachem +Tennie,Beacher +Tennille,Beachler +Teodora,Beachman +Teodoro,Beachum +Teofila,Beachy +Tequila,Beacom +Tera,Beadell +Tereasa,Beadle +Terence,Beadles +Teresa,Beadling +Terese,Beadnell +Teresia,Beady +Teresita,Beagan +Teressa,Beagle +Teri,Beagley +Terica,Beahan +Terina,Beahm +Terisa,Beahn +Terra,Beaird +Terrance,Beakley +Terrell,Beal +Terrell,Beale +Terrence,Bealer +Terresa,Beales +Terri,Beall +Terrie,Bealle +Terrilyn,Bealmear +Terry,Beals +Terry,Beam +Tesha,Beaman +Tess,Beamer +Tessa,Beames +Tessie,Beamesderfer +Thad,Beamish +Thaddeus,Beamon +Thalia,Beams +Thanh,Bean +Thanh,Beanblossom +Thao,Beandoin +Thea,Beane +Theda,Beaner +Thelma,Beans +Theo,Bear +Theo,Bearce +Theodora,Beard +Theodore,Beardall +Theola,Bearded +Theresa,Bearden +Therese,Beardmore +Theresia,Beardon diff --git a/batch/file-ingest/data/split/names_as.csv b/batch/file-ingest/data/split/names_as.csv new file mode 100644 index 0000000..9adb575 --- /dev/null +++ b/batch/file-ingest/data/split/names_as.csv @@ -0,0 +1,280 @@ +Theressa,Beards +Theron,Beardslee +Thersa,Beardsley +Thi,Beare +Thomas,Bearfield +Thomas,Bearman +Thomasena,Bears +Thomasina,Bearse +Thomasine,Bearup +Thora,Beary +Thresa,Beas +Thu,Beasley +Thurman,Beasly +Thuy,Beasmore +Tia,Beason +Tiana,Beaston +Tianna,Beat +Tiara,Beath +Tien,Beathe +Tiera,Beatie +Tierra,Beatley +Tiesha,Beato +Tifany,Beaton +Tiffaney,Beatrice +Tiffani,Beatson +Tiffanie,Beattie +Tiffany,Beattle +Tiffiny,Beatty +Tijuana,Beaty +Tilda,Beau +Tillie,Beaubien +Tim,Beaubrun +Timika,Beaucage +Timmy,Beauchaine +Timothy,Beauchamp +Timothy,Beauchemin +Tina,Beauchesne +Tinisha,Beaudet +Tiny,Beaudette +Tisa,Beaudin +Tish,Beaudine +Tisha,Beaudion +Titus,Beaudoin +Tobi,Beaudreau +Tobias,Beaudreault +Tobie,Beaudrie +Toby,Beaudry +Toby,Beaufait +Toccara,Beauford +Tod,Beaufort +Todd,Beaugard +Toi,Beauharnois +Tom,Beaulac +Tomas,Beaule +Tomasa,Beaulieu +Tomeka,Beauliev +Tomi,Beauman +Tomika,Beaumier +Tomiko,Beaumont +Tommie,Beaumonte +Tommie,Beauparlant +Tommy,Beaupre +Tommy,Beauprez +Tommye,Beauregard +Tomoko,Beaureguard +Tona,Beaushaw +Tonda,Beausoleil +Tonette,Beauvais +Toney,Beaven +Toni,Beaver +Tonia,Beavers +Tonie,Beavin +Tonisha,Beavis +Tonita,Beaz +Tonja,Beazer +Tony,Beazley +Tony,Bebber +Tonya,Bebeau +Tora,Bebee +Tori,Beberwyk +Torie,Bebo +Torri,Bebout +Torrie,Beccaria +Tory,Beccue +Tory,Becena +Tosha,Becenti +Toshia,Becera +Toshiko,Becerra +Tova,Becerril +Towanda,Bech +Toya,Bechard +Tracee,Bechel +Tracey,Becher +Tracey,Becherer +Traci,Bechler +Tracie,Bechman +Tracy,Becht +Tracy,Bechtel +Tran,Bechthold +Trang,Bechtol +Travis,Bechtold +Travis,Beck +Treasa,Becka +Treena,Becke +Trena,Beckel +Trent,Beckelheimer +Trenton,Beckelhimer +Tresa,Beckem +Tressa,Beckenbach +Tressie,Beckendorf +Treva,Becker +Trevor,Beckerdite +Trey,Beckerle +Tricia,Beckerman +Trina,Beckers +Trinh,Beckert +Trinidad,Beckes +Trinidad,Becket +Trinity,Beckett +Trish,Beckey +Trisha,Beckfield +Trista,Beckford +Tristan,Beckham +Tristan,Beckim +Troy,Beckius +Troy,Beckler +Trudi,Beckles +Trudie,Beckley +Trudy,Becklin +Trula,Becklund +Truman,Beckman +Tu,Beckmann +Tuan,Beckmeyer +Tula,Becknell +Tuyet,Beckner +Twana,Beckom +Twanda,Beckor +Twanna,Becks +Twila,Beckstead +Twyla,Beckstrand +Ty,Beckstrom +Tyesha,Beckton +Tyisha,Beckum +Tyler,Beckwith +Tyler,Beckworth +Tynisha,Becky +Tyra,Becnel +Tyree,Becraft +Tyrell,Becton +Tyron,Becvar +Tyrone,Becwar +Tyson,Becze +Ula,Bedar +Ulrike,Bedard +Ulysses,Bedatsky +Un,Bedaw +Una,Beddard +Ursula,Beddia +Usha,Beddingfield +Ute,Beddo +Vada,Beddoe +Val,Beddome +Val,Beddow +Valarie,Beddows +Valda,Bede +Valencia,Bedeau +Valene,Bedee +Valentin,Bedeker +Valentina,Bedell +Valentine,Bedenbaugh +Valentine,Bedenfield +Valeri,Beder +Valeria,Bedford +Valerie,Bedgood +Valery,Bedient +Vallie,Bedillion +Valorie,Bedingfield +Valrie,Bedker +Van,Bedlion +Van,Bednar +Vance,Bednarczyk +Vanda,Bednarek +Vanesa,Bednarik +Vanessa,Bednarowicz +Vanetta,Bednarski +Vania,Bednarz +Vanita,Bedner +Vanna,Bedney +Vannesa,Bednorz +Vannessa,Bedocs +Vashti,Bedoka +Vasiliki,Bedolla +Vaughn,Bedonie +Veda,Bedor +Velda,Bedore +Velia,Bedoya +Vella,Bedre +Velma,Bedrosian +Velva,Bedsaul +Velvet,Bedsole +Vena,Bedson +Venessa,Bedward +Venetta,Bedwell +Venice,Bee +Venita,Beebe +Vennie,Beebee +Venus,Beebout +Veola,Beech +Vera,Beecham +Verda,Beecher +Verdell,Beeching +Verdie,Beechler +Verena,Beechner +Vergie,Beechum +Verla,Beeck +Verlene,Beecken +Verlie,Beeckman +Verline,Beecroft +Vern,Beed +Verna,Beede +Vernell,Beedham +Vernetta,Beedle +Vernia,Beedles +Vernice,Beedoo +Vernie,Beedy +Vernita,Beeghly +Vernon,Beegle +Vernon,Beehler +Verona,Beek +Veronica,Beeker +Veronika,Beekman +Veronique,Beeks +Versie,Beel +Vertie,Beelar +Vesta,Beelby +Veta,Beeler +Vi,Beem +Vicenta,Beeman +Vicente,Beemer +Vickey,Beemon +Vicki,Been +Vickie,Beene +Vicky,Beenel +Victor,Beer +Victor,Beerbohm +Victoria,Beere +Victorina,Beerer +Vida,Beerle +Viki,Beerling +Vikki,Beerly +Vilma,Beerman +Vina,Beermann +Vince,Beermudez +Vincent,Beers +Vincenza,Beery +Vincenzo,Bees +Vinita,Beese +Vinnie,Beesley +Viola,Beesmer +Violet,Beeson +Violeta,Beetley +Violette,Beets +Virgen,Beetz +Virgie,Beevers +Virgil,Beezley +Virgil,Befort +Virgilio,Befus +Virgina,Bega +Virginia,Began +Vita,Begay +Vito,Begaye +Viva,Begeal +Vivan,Begeman +Vivian,Begen +Viviana,Beger +Vivien,Begg +Vivienne,Beggs +Von,Beghtol +Voncile,Begin +Vonda,Begley diff --git a/batch/file-ingest/data/split/names_at.csv b/batch/file-ingest/data/split/names_at.csv new file mode 100644 index 0000000..de6ea02 --- /dev/null +++ b/batch/file-ingest/data/split/names_at.csv @@ -0,0 +1,174 @@ +Vonnie,Begnaud +Wade,Begnoche +Wai,Begolli +Waldo,Begonia +Walker,Begor +Wallace,Beguelin +Wally,Beguhl +Walter,Begum +Walter,Begun +Walton,Behal +Waltraud,Behan +Wan,Behanan +Wanda,Behanna +Waneta,Behar +Wanetta,Behel +Wanita,Behen +Ward,Beherns +Warner,Behimer +Warren,Behizadeh +Wava,Behl +Waylon,Behlen +Wayne,Behler +Wei,Behling +Weldon,Behlke +Wen,Behlmer +Wendell,Behm +Wendi,Behme +Wendie,Behmer +Wendolyn,Behn +Wendy,Behne +Wenona,Behner +Werner,Behney +Wes,Behning +Wesley,Behnke +Wesley,Behnken +Weston,Behr +Whitley,Behran +Whitney,Behrend +Whitney,Behrends +Wilber,Behrendt +Wilbert,Behrens +Wilbur,Behrenwald +Wilburn,Behring +Wilda,Behringer +Wiley,Behrle +Wilford,Behrman +Wilfred,Behrmann +Wilfredo,Behrns +Wilhelmina,Behun +Wilhemina,Behunin +Will,Behymer +Willa,Beichner +Willard,Beidleman +Willena,Beidler +Willene,Beien +Willetta,Beier +Willette,Beierle +Willia,Beierschmitt +William,Beigert +William,Beighley +Williams,Beightol +Willian,Beik +Willie,Beil +Willie,Beile +Williemae,Beiler +Willis,Beiley +Willodean,Beilfuss +Willow,Beilinson +Willy,Beilke +Wilma,Beilman +Wilmer,Beilstein +Wilson,Bein +Wilton,Beine +Windy,Beinlich +Winford,Beiriger +Winfred,Beirise +Winifred,Beirne +Winnie,Beisch +Winnifred,Beisel +Winona,Beiser +Winston,Beish +Winter,Beisner +Wm,Beissel +Wonda,Beisser +Woodrow,Beiswanger +Wyatt,Beiswenger +Wynell,Beitel +Wynona,Beiter +Xavier,Beith +Xenia,Beitler +Xiao,Beitz +Xiomara,Beitzel +Xochitl,Beja +Xuan,Bejar +Yadira,Bejaran +Yaeko,Bejarano +Yael,Bejcek +Yahaira,Bejerano +Yajaira,Bejger +Yan,Bejil +Yang,Bejjani +Yanira,Bek +Yasmin,Bekele +Yasmine,Beker +Yasuko,Bekerman +Yee,Bekhit +Yelena,Bekins +Yen,Bekis +Yer,Bekius +Yesenia,Bekker +Yessenia,Bel +Yetta,Bela +Yevette,Belair +Yi,Belak +Ying,Belancer +Yoko,Beland +Yolanda,Belanger +Yolande,Belangia +Yolando,Belanich +Yolonda,Belarde +Yon,Belardo +Yong,Belarmino +Yong,Belasco +Yoshie,Belay +Yoshiko,Belback +Youlanda,Belcastro +Young,Belch +Young,Belcher +Yu,Belchior +Yuette,Belcourt +Yuk,Belden +Yuki,Beldin +Yukiko,Belding +Yuko,Beldon +Yulanda,Belen +Yun,Belew +Yung,Beley +Yuonne,Belezos +Yuri,Belfanti +Yuriko,Belfast +Yvette,Belfi +Yvone,Belfield +Yvonne,Belfiglio +Zachariah,Belfiore +Zachary,Belflower +Zachery,Belford +Zack,Belfort +Zackary,Belfy +Zada,Belgard +Zaida,Belgarde +Zana,Belgrade +Zandra,Belgrave +Zane,Belhumeur +Zelda,Beliard +Zella,Belich +Zelma,Belidor +Zena,Belieu +Zenaida,Belile +Zenia,Beliles +Zenobia,Belin +Zetta,Belina +Zina,Belinski +Zita,Belinsky +Zoe,Belisle +Zofia,Belitz +Zoila,Beliveau +Zola,Beliz +Zona,Belizaire +Zonia,Beljan +Zora,Belk +Zoraida,Belka +Zula,Belke +Zulema,Belken +Zulma,Belkin diff --git a/batch/file-ingest/pom.xml b/batch/file-ingest/pom.xml index ed6b485..3990365 100644 --- a/batch/file-ingest/pom.xml +++ b/batch/file-ingest/pom.xml @@ -8,12 +8,12 @@ org.springframework.boot spring-boot-starter-parent - 2.0.0.M7 + 2.1.0.BUILD-SNAPSHOT 1.8 3.7.0 - 1.2.2.RELEASE + 2.1.0.BUILD-SNAPSHOT checkstyle.xml 2.17 @@ -37,15 +37,16 @@ ${spring.cloud.task.version} - junit - junit + org.springframework.boot + spring-boot-starter-test test - org.hsqldb - hsqldb + org.springframework.batch + spring-batch-test test + @@ -73,6 +74,11 @@ Spring Milestone Repository http://repo.spring.io/milestone + + repository.spring.snapshot + Spring Snapshot Repository + http://repo.spring.io/snapshot + @@ -83,6 +89,14 @@ false + + spring-snapshots + Spring Snapshots + https://repo.spring.io/snapshot + + true + + diff --git a/batch/file-ingest/src/main/java/io/spring/cloud/dataflow/ingest/Application.java b/batch/file-ingest/src/main/java/io/spring/cloud/dataflow/ingest/Application.java index de3447a..3674936 100644 --- a/batch/file-ingest/src/main/java/io/spring/cloud/dataflow/ingest/Application.java +++ b/batch/file-ingest/src/main/java/io/spring/cloud/dataflow/ingest/Application.java @@ -18,17 +18,16 @@ package io.spring.cloud.dataflow.ingest; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; -import org.springframework.cloud.task.configuration.EnableTask; /** * Main entry point for the ingest sample application. * * @author Chris Schaefer + * @author David Turanski */ -@EnableTask @SpringBootApplication public class Application { - public static void main(String[] args) throws Exception { + public static void main(String[] args) { SpringApplication.run(Application.class, args); } } diff --git a/batch/file-ingest/src/main/java/io/spring/cloud/dataflow/ingest/config/BatchConfiguration.java b/batch/file-ingest/src/main/java/io/spring/cloud/dataflow/ingest/config/BatchConfiguration.java index a9415f2..a9f861a 100644 --- a/batch/file-ingest/src/main/java/io/spring/cloud/dataflow/ingest/config/BatchConfiguration.java +++ b/batch/file-ingest/src/main/java/io/spring/cloud/dataflow/ingest/config/BatchConfiguration.java @@ -33,7 +33,6 @@ import org.springframework.batch.item.ItemStreamReader; import org.springframework.batch.item.ItemWriter; import org.springframework.batch.item.database.builder.JdbcBatchItemWriterBuilder; import org.springframework.batch.item.file.builder.FlatFileItemReaderBuilder; - import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.context.annotation.Bean; @@ -44,19 +43,24 @@ import org.springframework.core.io.ResourceLoader; * Class used to configure the batch job related beans. * * @author Chris Schaefer + * @author David Turanski */ @Configuration @EnableBatchProcessing public class BatchConfiguration { + private final DataSource dataSource; + private final ResourceLoader resourceLoader; + private final JobBuilderFactory jobBuilderFactory; + private final StepBuilderFactory stepBuilderFactory; @Autowired public BatchConfiguration(final DataSource dataSource, final JobBuilderFactory jobBuilderFactory, - final StepBuilderFactory stepBuilderFactory, - final ResourceLoader resourceLoader) { + final StepBuilderFactory stepBuilderFactory, + final ResourceLoader resourceLoader) { this.dataSource = dataSource; this.resourceLoader = resourceLoader; this.jobBuilderFactory = jobBuilderFactory; @@ -65,12 +69,17 @@ public class BatchConfiguration { @Bean @StepScope - public ItemStreamReader reader(@Value("#{jobParameters['filePath']}") String filePath) throws Exception { + public ItemStreamReader reader(@Value("#{jobParameters['localFilePath']}") String filePath) { + + if (!filePath.matches("[a-z]+:.*")) { + filePath = "file:" + filePath; + } + return new FlatFileItemReaderBuilder() .name("reader") .resource(resourceLoader.getResource(filePath)) .delimited() - .names(new String[] {"firstName", "lastName"}) + .names(new String[] { "firstName", "lastName" }) .fieldSetMapper(new PersonFieldSetMapper()) .build(); } @@ -90,7 +99,7 @@ public class BatchConfiguration { } @Bean - public Job ingestJob() throws Exception { + public Job ingestJob() { return jobBuilderFactory.get("ingestJob") .incrementer(new RunIdIncrementer()) .flow(step1()) @@ -99,7 +108,7 @@ public class BatchConfiguration { } @Bean - public Step step1() throws Exception { + public Step step1() { return stepBuilderFactory.get("ingest") .chunk(10) .reader(reader(null)) diff --git a/batch/file-ingest/src/main/resources/application.properties b/batch/file-ingest/src/main/resources/application.properties index f5e011e..fadf6eb 100644 --- a/batch/file-ingest/src/main/resources/application.properties +++ b/batch/file-ingest/src/main/resources/application.properties @@ -1 +1,2 @@ spring.application.name=fileIngest +spring.datasource.initialization-mode=always diff --git a/batch/file-ingest/src/main/resources/schema-all.sql b/batch/file-ingest/src/main/resources/schema-all.sql index e472ce1..04f70e9 100644 --- a/batch/file-ingest/src/main/resources/schema-all.sql +++ b/batch/file-ingest/src/main/resources/schema-all.sql @@ -1,7 +1,6 @@ -DROP TABLE people IF EXISTS; - -CREATE TABLE people ( - person_id BIGINT IDENTITY NOT NULL PRIMARY KEY, +CREATE TABLE IF NOT EXISTS people ( + person_id BIGINT NOT NULL AUTO_INCREMENT, first_name VARCHAR(20), - last_name VARCHAR(20) + last_name VARCHAR(20), + PRIMARY KEY (person_id) ); diff --git a/batch/file-ingest/src/test/java/io/spring/cloud/dataflow/ingest/BatchApplicationTests.java b/batch/file-ingest/src/test/java/io/spring/cloud/dataflow/ingest/BatchApplicationTests.java new file mode 100644 index 0000000..f4ef4b0 --- /dev/null +++ b/batch/file-ingest/src/test/java/io/spring/cloud/dataflow/ingest/BatchApplicationTests.java @@ -0,0 +1,101 @@ +/* + * Copyright 2018 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.spring.cloud.dataflow.ingest; + +import java.util.List; +import java.util.Map; + +import io.spring.cloud.dataflow.ingest.config.BatchConfiguration; +import org.junit.Test; +import org.junit.runner.RunWith; + +import org.springframework.batch.core.BatchStatus; +import org.springframework.batch.core.JobExecution; +import org.springframework.batch.core.JobParametersBuilder; +import org.springframework.batch.test.JobLauncherTestUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.EnableAutoConfiguration; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.context.junit4.SpringRunner; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotNull; + +/** + * BatchConfiguration test cases + * + * @author Chris Schaefer + * @author David Turanski + */ + +@RunWith(SpringRunner.class) +@ContextConfiguration(classes = { BatchConfiguration.class, BatchApplicationTests.BatchTestConfiguration.class }) +public class BatchApplicationTests { + + @Autowired + private JobLauncherTestUtils jobLauncherTestUtils; + + @Autowired + private JdbcTemplate jdbcTemplate; + + @Test + public void testBatchConfigurationFail() throws Exception { + + BatchStatus status = jobLauncherTestUtils.launchJob(new JobParametersBuilder().addString( + "localFilePath", "classpath:missing-data.csv").toJobParameters()).getStatus(); + assertEquals("Incorrect batch status", BatchStatus.FAILED, status); + } + + @Test + public void testBatchDataProcessing() throws Exception { + + JobExecution jobExecution = jobLauncherTestUtils.launchJob(new JobParametersBuilder().addString( + "localFilePath", "classpath:data.csv").toJobParameters()); + + assertEquals("Incorrect batch status", BatchStatus.COMPLETED, jobExecution.getStatus()); + + assertEquals("Invalid number of step executions", 1, jobExecution.getStepExecutions().size()); + + List> peopleList = jdbcTemplate.queryForList( + "select first_name, last_name from people"); + + assertEquals("Incorrect number of results", 5, peopleList.size()); + + for (Map person : peopleList) { + assertNotNull("Received null person", person); + + String firstName = (String) person.get("first_name"); + assertEquals("Invalid first name: " + firstName, firstName.toUpperCase(), firstName); + + String lastName = (String) person.get("last_name"); + assertEquals("Invalid last name: " + lastName, lastName.toUpperCase(), lastName); + } + } + + @Configuration + @EnableAutoConfiguration + public static class BatchTestConfiguration { + + @Bean + public JobLauncherTestUtils jobLauncherTestUtils() { + return new JobLauncherTestUtils(); + } + } +} diff --git a/batch/file-ingest/src/test/java/io/spring/cloud/dataflow/ingest/config/BatchConfigurationTests.java b/batch/file-ingest/src/test/java/io/spring/cloud/dataflow/ingest/config/BatchConfigurationTests.java deleted file mode 100644 index 419f994..0000000 --- a/batch/file-ingest/src/test/java/io/spring/cloud/dataflow/ingest/config/BatchConfigurationTests.java +++ /dev/null @@ -1,136 +0,0 @@ -/* - * Copyright 2018 the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package io.spring.cloud.dataflow.ingest.config; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import org.springframework.batch.core.BatchStatus; -import org.springframework.batch.core.Job; -import org.springframework.batch.core.JobExecution; -import org.springframework.batch.core.JobParameters; -import org.springframework.batch.core.JobParametersBuilder; -import org.springframework.batch.core.Step; -import org.springframework.batch.core.launch.JobLauncher; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.AnnotationConfigApplicationContext; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.core.io.ResourceLoader; -import org.springframework.jdbc.core.JdbcTemplate; -import org.springframework.jdbc.datasource.embedded.EmbeddedDatabaseFactory; -import org.springframework.jdbc.datasource.init.DatabasePopulatorUtils; -import org.springframework.jdbc.datasource.init.ResourceDatabasePopulator; -import org.springframework.util.ClassUtils; - -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.sql.DataSource; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; - -/** - * BatchConfiguration test cases - * - * @author Chris Schaefer - */ -public class BatchConfigurationTests { - private static AnnotationConfigApplicationContext context; - - @Before - public void createContext() { - context = new AnnotationConfigApplicationContext(new Class[] { - BatchConfiguration.class, BatchConfigurationTests.DataSourceConfiguration.class }); - } - - @After - public void closeContext() { - context.close(); - } - - @Test - public void testBatchConfigurationSuccess() throws Exception { - JobExecution jobExecution = testJob("classpath:data.csv"); - - assertEquals("Incorrect batch status", BatchStatus.COMPLETED, jobExecution.getStatus()); - assertEquals("Invalid number of step executions", 1, jobExecution.getStepExecutions().size()); - } - - @Test - public void testBatchConfigurationFail() throws Exception { - JobExecution jobExecution = testJob("classpath:missing-data-file.csv"); - - assertEquals("Incorrect batch status", BatchStatus.FAILED, jobExecution.getStatus()); - } - - @Test - public void testBatchDataProcessing() throws Exception { - JobExecution jobExecution = testJob("classpath:data.csv"); - - assertEquals("Incorrect batch status", BatchStatus.COMPLETED, jobExecution.getStatus()); - assertEquals("Invalid number of step executions", 1, jobExecution.getStepExecutions().size()); - - JdbcTemplate jdbcTemplate = new JdbcTemplate(context.getBean(DataSource.class)); - List> peopleList = jdbcTemplate.queryForList("select first_name, last_name from people"); - - assertEquals("Incorrect number of results", 5, peopleList.size()); - - for(Map person : peopleList) { - assertNotNull("Received null person", person); - - String firstName = (String) person.get("first_name"); - assertEquals("Invalid first name: " + firstName, firstName.toUpperCase(), firstName); - - String lastName = (String) person.get("last_name"); - assertEquals("Invalid last name: " + lastName, lastName.toUpperCase(), lastName); - } - } - - private JobExecution testJob(String filePath) throws Exception { - Job job = context.getBean(Job.class); - JobLauncher jobLauncher = context.getBean(JobLauncher.class); - JobParameters jobParameters = new JobParametersBuilder() - .addString("filePath", filePath) - .toJobParameters(); - - return jobLauncher.run(job, jobParameters); - } - - @Configuration - public static class DataSourceConfiguration { - @Autowired - private ResourceLoader resourceLoader; - - @PostConstruct - protected void initialize() { - ResourceDatabasePopulator populator = new ResourceDatabasePopulator(); - populator.addScript(resourceLoader.getResource(ClassUtils.addResourcePathToPackagePath(Step.class, "schema-hsqldb.sql"))); - populator.addScript(resourceLoader.getResource("classpath:schema-all.sql")); - populator.setContinueOnError(true); - DatabasePopulatorUtils.execute(populator, dataSource()); - } - - @Bean - public DataSource dataSource() { - return new EmbeddedDatabaseFactory().getDatabase(); - } - } -} diff --git a/pom.xml b/pom.xml index a7f2eff..985eb43 100644 --- a/pom.xml +++ b/pom.xml @@ -145,53 +145,6 @@ - - - diff --git a/src/main/asciidoc/batch/file-ingest-sftp/local.adoc b/src/main/asciidoc/batch/file-ingest-sftp/local.adoc new file mode 100644 index 0000000..d03e73b --- /dev/null +++ b/src/main/asciidoc/batch/file-ingest-sftp/local.adoc @@ -0,0 +1,211 @@ +[[sftp-file-ingest-local]] +==== Using the Local Server + +===== Additional Prerequisites + +* A running local Data Flow Server +include::{docs_dir}/local-server.adoc[] + +* Running instance of link:http://kafka.apache.org/downloads.html[Kafka] +* Either a remote or local host accepting SFTP connections. + +* A database tool such as link:https://dbeaver.jkiss.org/download/[DBeaver] to inspect the database contents + +NOTE: To simplify the dependencies and configuration in this example, we will use our local machine acting as an SFTP server. + +===== Building and Running the Demo + +. Build the demo JAR ++ +From the root of this project: ++ +``` +$ cd batch/file-ingest +$ mvn clean package +``` +NOTE: For convenience, you can skip this step. +The jar is published to the https://repo.spring.io/libs-snapshot-local/io/spring/cloud/dataflow/ingest/ingest/1.0.0.BUILD-SNAPSHOT/[Spring Maven repository] ++ + +. Create the data directories ++ +Now we create a remote directory on the SFTP server and a local directory where the batch job expects to find files. ++ +NOTE: If you are using a remote SFTP server, create the remote directory on the SFTP server. +Since we are using the local machine as the SFTP server, we will create both the local and remote directories on the local machine. ++ +``` +$ mkdir -p /tmp/remote-files /tmp/local-files +``` ++ + +. Register the `sftp-dataflow` source and the `task-launcher-dataflow` sink ++ +With our Spring Cloud Data Flow server running, we register the `sftp-dataflow` source and `task-launcher-dataflow` sink. +The `sftp-dataflow` source application will do the work of polling the remote directory for new files and downloading them to the local directory. +As each file is received, it emits a message for the `task-launcher-dataflow` sink to launch the task to process the data from that file. ++ +In the Spring Cloud Data Flow shell: ++ +[source,console,options=nowrap] +---- +dataflow:>app register --name sftp --type source --uri maven://org.springframework.cloud.stream.app:sftp-dataflow-source-kafka:2.0.3.BUILD-SNAPSHOT +Successfully registered application 'source:sftp' +dataflow:>app register --name task-launcher --type sink --uri maven://org.springframework.cloud.stream.app:task-launcher-dataflow-sink-kafka:1.0.0.BUILD-SNAPSHOT +Successfully registered application 'sink:task-launcher' +---- ++ +. Register and create the file ingest task. If you're using the published jar, set `--uri maven://io.spring.cloud.dataflow.ingest:ingest:1.0.0.BUILD-SNAPSHOT`: +[source,console,options=nowrap] +dataflow:>app register --name fileIngest --type task --uri file:///path/to/target/ingest-X.X.X.jar +Successfully registered application 'task:fileIngest' +dataflow:>task create fileIngestTask --definition fileIngest +Created new task 'fileIngestTask' ++ +. Create and deploy the stream ++ +Now lets create and deploy the stream. +Once deployed, the stream will start polling the SFTP server and, when new files arrive, launch the batch job. ++ +NOTE: Replace `` and '` below. +The `` and `` values are the credentials for the local (or remote) user. +If not using a local SFTP server, specify the host using the `--host`, and optionally `--port`, parameters. +If not defined, `host` defaults to `127.0.0.1` and `port` defaults to `22`. ++ +[source,console,options=nowrap] +---- +dataflow:>stream create --name inboundSftp --definition "sftp --username= --password= --allow-unknown-keys=true --task.launch.request.taskName=fileIngestTask --remote-dir=/tmp/remote-files/ --local-dir=/tmp/local-files/ | task-launcher" --deploy +Created new stream 'inboundSftp' +Deployment request has been sent +---- ++ + +. Verify Stream deployment ++ +We can see the status of the streams to be deployed with `stream list`, for example: ++ +[source,console,options=nowrap] +---- +dataflow:>stream list +╔═══════════╤════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╤════════════════════════════╗ +║Stream Name│ Stream Definition │ Status ║ +╠═══════════╪════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╪════════════════════════════╣ +║inboundSftp│sftp --password='******' --remote-dir=/tmp/remote-files/ --local-dir=/tmp/local-files/ --task.launch.request.taskName=fileIngestTask│The stream has been ║ +║ │--allow-unknown-keys=true --username= | task-launcher │successfully deployed ║ +╚═══════════╧════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╧════════════════════════════╝ +---- ++ + +. Inspect logs ++ +In the event the stream failed to deploy, or you would like to inspect the logs for any reason, you can get the location of the logs to applications created for the `inboundSftp` stream using the `runtime apps` command: +[source,console,options=nowrap] +dataflow:>runtime apps +╔═══════════════════════════╤═══════════╤════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ +║ App Id / Instance Id │Unit Status│ No. of Instances / Attributes ║ +╠═══════════════════════════╪═══════════╪════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣ +║inboundSftp.sftp │ deployed │ 1 ║ +╟┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┼┈┈┈┈┈┈┈┈┈┈┈┼┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╢ +║ │ │ guid = 23057 ║ +║ │ │ pid = 71927 ║ +║ │ │ port = 23057 ║ +║inboundSftp.sftp-0 │ deployed │ stderr = /var/folders/hd/5yqz2v2d3sxd3n879f4sg4gr0000gn/T/spring-cloud-deployer-120915912946760306/inboundSftp-1540821009913/inboundSftp.sftp/stderr_0.log ║ +║ │ │ stdout = /var/folders/hd/5yqz2v2d3sxd3n879f4sg4gr0000gn/T/spring-cloud-deployer-120915912946760306/inboundSftp-1540821009913/inboundSftp.sftp/stdout_0.log ║ +║ │ │ url = http://192.168.64.1:23057 ║ +║ │ │working.dir = /var/folders/hd/5yqz2v2d3sxd3n879f4sg4gr0000gn/T/spring-cloud-deployer-120915912946760306/inboundSftp-1540821009913/inboundSftp.sftp ║ +╟───────────────────────────┼───────────┼────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╢ +║inboundSftp.task-launcher │ deployed │ 1 ║ +╟┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┼┈┈┈┈┈┈┈┈┈┈┈┼┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈╢ +║ │ │ guid = 60081 ║ +║ │ │ pid = 71926 ║ +║ │ │ port = 60081 ║ +║inboundSftp.task-launcher-0│ deployed │ stderr = /var/folders/hd/5yqz2v2d3sxd3n879f4sg4gr0000gn/T/spring-cloud-deployer-120915912946760306/inboundSftp-1540820991695/inboundSftp.task-launcher/stderr_0.log║ +║ │ │ stdout = /var/folders/hd/5yqz2v2d3sxd3n879f4sg4gr0000gn/T/spring-cloud-deployer-120915912946760306/inboundSftp-1540820991695/inboundSftp.task-launcher/stdout_0.log║ +║ │ │ url = http://192.168.64.1:60081 ║ +║ │ │working.dir = /var/folders/hd/5yqz2v2d3sxd3n879f4sg4gr0000gn/T/spring-cloud-deployer-120915912946760306/inboundSftp-1540820991695/inboundSftp.task-launcher ║ +╚═══════════════════════════╧═══════════╧════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ + ++ + +. Add data ++ +Normally data would be uploaded to an SFTP server. +We will simulate this by copying a file into the directory specified by `--remote-dir`. +Sample data can be found in the `data/` directory of the <> project. ++ +Copy `data/name-list.csv` into the `/tmp/remote-files` directory which the SFTP source is monitoring. +When this file is detected, the `sftp` source will download it to the `/tmp/local-files` directory specified by `--local-dir`, and emit a Task Launch Request. +The Task Launch Request includes the name of the task to launch along with the local file path, given as the command line argument `localFilePath`. +Spring Batch binds each command line argument to a corresponding JobParameter. +The FileIngestTask job processes the file given by the JobParameter named `localFilePath`. +The `task-launcher` sink polls for messages using an exponential back-off. +Since there have not been any recent requests, the task will launch within 30 seconds after the request is published. ++ +``` +$ cp data/name-list.csv /tmp/remote-files +``` +When the batch job launches, you will see something like this in the SCDF console log: +[source,console,options=nowrap] +2018-10-26 16:47:24.879 INFO 86034 --- [nio-9393-exec-7] o.s.c.d.spi.local.LocalTaskLauncher : Command to be executed: /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/bin/java -jar /batch/file-ingest/target/ingest-1.0.0.jar localFilePath=/tmp/local-files/name-list.csv --spring.cloud.task.executionid=1 +2018-10-26 16:47:25.100 INFO 86034 --- [nio-9393-exec-7] o.s.c.d.spi.local.LocalTaskLauncher : launching task fileIngestTask-8852d94d-9dd8-4760-b0e4-90f75ee028de + Logs will be in /var/folders/hd/5yqz2v2d3sxd3n879f4sg4gr0000gn/T/fileIngestTask3100511340216074735/1540586844871/fileIngestTask-8852d94d-9dd8-4760-b0e4-90f75ee028de ++ + +. Inspect Job Executions ++ +After data is received and the batch job runs, it will be recorded as a Job Execution. We can view job executions by for example issuing the following command in the Spring Cloud Data Flow shell: ++ +[source,console,options=nowrap] +---- +dataflow:>job execution list +╔═══╤═══════╤═════════╤════════════════════════════╤═════════════════════╤══════════════════╗ +║ID │Task ID│Job Name │ Start Time │Step Execution Count │Definition Status ║ +╠═══╪═══════╪═════════╪════════════════════════════╪═════════════════════╪══════════════════╣ +║1 │1 │ingestJob│Tue May 01 23:34:05 EDT 2018│1 │Created ║ +╚═══╧═══════╧═════════╧════════════════════════════╧═════════════════════╧══════════════════╝ +---- ++ +As well as list more details about that specific job execution: ++ +[source,console,options=nowrap] +---- +dataflow:>job execution display --id 1 +╔═══════════════════════════════════════╤══════════════════════════════╗ +║ Key │ Value ║ +╠═══════════════════════════════════════╪══════════════════════════════╣ +║Job Execution Id │1 ║ +║Task Execution Id │1 ║ +║Task Instance Id │1 ║ +║Job Name │ingestJob ║ +║Create Time │Fri Oct 26 16:57:51 EDT 2018 ║ +║Start Time │Fri Oct 26 16:57:51 EDT 2018 ║ +║End Time │Fri Oct 26 16:57:53 EDT 2018 ║ +║Running │false ║ +║Stopping │false ║ +║Step Execution Count │1 ║ +║Execution Status │COMPLETED ║ +║Exit Status │COMPLETED ║ +║Exit Message │ ║ +║Definition Status │Created ║ +║Job Parameters │ ║ +║-spring.cloud.task.executionid(STRING) │1 ║ +║run.id(LONG) │1 ║ +║localFilePath(STRING) │/tmp/local-files/name-list.csv║ +╚═══════════════════════════════════════╧══════════════════════════════╝ +---- ++ +. Verify data ++ +When the the batch job runs, it processes the file in the local directory `/tmp/local-files` and transforms each item to uppercase names and inserts it into the database. ++ +You may use any database tool that supports the H2 database to inspect the data. +In this example we use the database tool `DBeaver`. +Lets inspect the table to ensure our data was processed correctly. ++ +Within DBeaver, create a connection to the database using the JDBC URL `jdbc:h2:tcp://localhost:19092/mem:dataflow`, and user `sa` with no password. +When connected, expand the `PUBLIC` schema, then expand `Tables` and then double click on the table `PEOPLE`. +When the table data loads, click the "Data" tab to view the data. ++ + +. You're done! + diff --git a/src/main/asciidoc/batch/file-ingest-sftp/main.adoc b/src/main/asciidoc/batch/file-ingest-sftp/main.adoc index 410bf9d..962cba5 100644 --- a/src/main/asciidoc/batch/file-ingest-sftp/main.adoc +++ b/src/main/asciidoc/batch/file-ingest-sftp/main.adoc @@ -1,513 +1,246 @@ +[[spring-cloud-data-flow-samples-sftp-file-ingest-overview]] +:sectnums: +:docs_dir: ../.. +=== Batch File Ingest - SFTP Demo -=== Batch File Ingest - SFTP +In the <> sample we built a link:https://projects.spring.io/spring-batch[Spring Batch] application that link:https://cloud.spring.io/spring-cloud-dataflow[Spring Cloud Data Flow] launched as a task to process a file. +This time we will build on that sample to create and deploy a link:https://docs.spring.io/spring-cloud-dataflow/docs/current/reference/htmlsingle/#spring-cloud-dataflow-streams[stream] that launches that task. +The stream will poll an SFTP server and, for each new file that it finds, will download the file and launch the batch job to process it. -In the <> demonstration we built a link:https://projects.spring.io/spring-batch[Spring Batch] application that would deploy into link:https://cloud.spring.io/spring-cloud-dataflow[Spring Cloud Data Flow] as a task and process a file embedded in the batch job JAR. This time we will build upon that sample but rather than deploying as a task in Spring Cloud Data Flow, we will create a link:https://docs.spring.io/spring-cloud-dataflow/docs/current/reference/htmlsingle/#spring-cloud-dataflow-streams[Stream]. This stream will poll an SFTP server and for each new file that it finds it launches the batch job to download the file and process it. +The source for the demo project is located in the `batch/file-ingest` directory at the top-level of this repository. ==== Prerequisites - -* Running instance of link:http://kafka.apache.org/downloads.html[Kafka] - -* Running instance of link:https://redis.io/download[Redis] - -* A Running Data Flow Server -include::{docs_dir}/local-server.adoc[] - * A Running Data Flow Shell include::{docs_dir}/shell.adoc[] -* Either a remote or local host accepting SFTP connections. +include::local.adoc[] -* A database tool such as link:https://dbeaver.jkiss.org/download/[DBeaver] to inspect the database contents +include::pcf.adoc[] -NOTE: To simplify the dependencies and configuration in this example, we will use our local machine acting as an SFTP server. +==== Limiting Concurrent Task Executions -==== Batch File Ingest SFTP Demo Overview +The Batch File Ingest - SFTP Demo processes a single file with 5000+ items. What if we copy 100 files to the remote directory? +The sftp source will process them immediately, generating 100 task launch requests. The Dataflow Server launches tasks asynchronously so this could potentially overwhelm the resources of the runtime platform. +For example, when running the Data Flow server on your local machine, each launched task creates a new JVM. In Cloud Foundry, each task creates a new container instance. -The source for the demo project is located in the `batch/file-ingest-sftp` directory at the top-level of this repository. The code in this directory is built upon the same code found in <>. +Fortunately, Spring Cloud Data Flow 1.7 introduced new features to manage concurrently running tasks, including a new configuration parameter, `spring.cloud.dataflow.task.maximum-concurrent-tasks`, to http://docs.spring.io/spring-cloud-dataflow/docs/current/reference/htmlsingle/#spring-cloud-dataflow-task-limit-concurrent-executions[limit the number of concurrently running tasks]. +We can use this demo to see how this works. -The key modifications from the <> sample are: +===== Configuring the SCDF server +Set the maximum concurrent tasks to 3. +For the local server, restart the server, adding a command line argument `--spring.cloud.dataflow.task.maximum-concurrent-tasks=3`. -* `BatchConfiguration` - The main change to this class is the addition of a link:https://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/StepExecutionListener.html[`StepExecutionLister`]. This listener gets set into the configuration of `step1` so on execution of the step, the listener will fetch the provided file. Since we are now fetching a file from a remote resource and downloading it for processing, we obtain the remote file location from a link:https://docs.spring.io/spring-batch/trunk/apidocs/org/springframework/batch/core/JobParameter.html[`JobParameter`] named `remoteFilePath` and the path to where the downloaded file will be stored as under the `JobParameter` named `localFilePath`. +For the Cloud Foundry server, `cf set-env SPRING_CLOUD_DATAFLOW_TASK_MAXIMUM_CONCURRENT_TASKS 3`, and restage. -* `SftpRemoteResource` - To obtain the file from SFTP, this class was created utilizing the link:https://docs.spring.io/spring-integration/api/org/springframework/integration/sftp/session/SftpRemoteFileTemplate.html[`SftpRemoteFileTemplate`] class from link:https://projects.spring.io/spring-integration/[Spring Integration]. We create a new bean from this class in `BatchConfiguration` and the `StepExecutionListener` uses it to fetch files. +===== Running the demo +Follow the main demo instructions but change the `Add Data` step, as described below. -Additionally we use Redis to persist the paths of files we have seen on the SFTP server. We persist this data rather than storing it in memory so the the seen files won't be sent for processing in the event of a failure. - -==== Building and Running the Demo - -. Build the demo JAR +. Monitor the task launcher + -From the root of this project: +Tail the logs on the `task-launcher` app. + +If there are no requests in the input queue, you will see something like: ++ +[source, console, options=nowrap] +---- +07:42:51.760 INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : No task launch request received- increasing polling period to 2 seconds. +07:42:53.768 INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : No task launch request received- increasing polling period to 4 seconds. +07:42:57.780 INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : No task launch request received- increasing polling period to 8 seconds. +07:43:05.791 INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : No task launch request received- increasing polling period to 16 seconds. +07:43:21.801 INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : No task launch request received- increasing polling period to 30 seconds. +07:43:51.811 INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : No task launch request received +07:44:21.824 INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : No task launch request received +07:44:51.834 INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : No task launch request received +---- ++ +The first three messages show the exponential backoff at start up or after processing the final request. +The the last three message show the task launcher in a steady state of polling for messages every 30 seconds. +Of course, these values are configurable. ++ +The task launcher sink polls the input destination. The polling period adjusts according to the presence of task launch requests and also to the number of currently running tasks reported via the Data Flow server's `tasks/executions/current` REST endpoint. +The sink queries this endpoint and will pause polling the input for new requests if the number of concurrent tasks is at its limit. +This introduces a 1-30 second lag between the creation of the task launch request and the execution of the request, sacrificing some performance for resilience. +Task launch requests will never be sent to a dead letter queue because the server is busy or unavailable. +The exponential backoff also prevents the app from querying the server excessively when there are no task launch requests. ++ +You can also monitor the Data Flow server: ++ +[source, console, options=nowrap] +---- +$ watch curl /tasks/executions/current +Every 2.0s: curl http://localhost:9393/tasks/executions/current ultrafox.local: Wed Oct 31 08:38:53 2018 + + % Total % Received % Xferd Average Speed Time Time Time Current + Dload Upload Total Spent Left Speed + 0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0100 53 0 53 0 0 53 0 --:--:-- --:--:-- --:--:-- 5888 +{"maximumTaskExecutions":3,"runningExecutionCount":0} +---- + +. Add Data ++ +The directory `batch/file-ingest/data/split` contains the contents of +`batch/file-ingest/data/name-list.csv` split into 20 files, not 100 but enough to illustrate the concept. +Upload these files to the SFTP remote directory, e.g., + ``` -$ cd batch/file-ingest-sftp -$ mvn clean package +sftp>cd remote-files +sftp>lcd batch/file-ingest/data/split +sftp>mput * ``` -+ - -. Create the data directories -+ -Now we create directories where the batch job expects to find files that would be on the remote SFTP server as well as where they should be transferred locally. These paths must exist prior to running the batch job. -+ -NOTE: If you are using a non-local SFTP server, the `/tmp/remote-files` directory would be created on the SFTP server and `/tmp/local-files` would be created on your local machine. -+ +Or if using the local machine as the SFTP server: ``` -$ mkdir -p /tmp/remote-files /tmp/local-files +>cp * /tmp/remote-files ``` -+ - -. Register the the SFTP source and the Task Launcher Local sink -+ -With our Spring Cloud Data Flow server running, we register the `SFTP` source and `task-launcher-local` sink. The `SFTP` source application will do the work of polling for new files and when received, it sends a message to the `task-launcher-local` to launch the batch job for that file. -+ -In the Spring Cloud Data Flow shell: -+ -[source,console,options=nowrap] +In the `task-launcher` logs, you should now see: +[source, console, options=nowrap] ---- -dataflow:>app register --name sftp --type source --uri maven://org.springframework.cloud.stream.app:sftp-source-kafka:2.0.0.BUILD-SNAPSHOT -Successfully registered application 'source:sftp' -dataflow:>app register --name task-launcher-local --type sink --uri maven://org.springframework.cloud.stream.app:task-launcher-local-sink-kafka:2.0.0.M1 -Successfully registered application 'sink:task-launcher-local' ----- -+ - -. Create and deploy the stream -+ -Now lets create and deploy the stream which will start polling the SFTP server and when new files arrive launch the batch job. -+ -NOTE: you must replace `--username=user`, `--password=pass` and `--batch-resource-uri=file:////path/to/sftp-ingest.jar` below to their respective values. The `--username=` and `--password=` parameters are the credentials for your local (or remote) user and `--batch-resource-uri=` is the fully qualified path to the sample ingest JAR we built above. If rather than using the local system as an SFTP server, to specify the host use the `--host=` parameter and optionally `--port=`. If not defined, `--host` defaults to `127.0.0.1` and port defaults to `22`. -+ -[source,console,options=nowrap] ----- -dataflow:>stream create --name inboundSftp --definition "sftp --username=user --password=pass --allow-unknown-keys=true --task-launcher-output=true --remote-dir=/tmp/remote-files/ --batch-resource-uri=file:////path/to/sftp-ingest.jar --data-source-url=jdbc:h2:tcp://localhost:19092/mem:dataflow --data-source-user-name=sa --local-file-path-job-parameter-value=/tmp/local-files/ | task-launcher-local" --deploy -Created new stream 'inboundSftp' -Deployment request has been sent ----- -+ - -. Verify Stream deployment -+ -We can see the status of the streams to be deployed with `stream list`, for example: -+ -[source,console,options=nowrap] ----- -dataflow:>stream list -╔═══════════╤═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╤═════════════╗ -║Stream Name│ Stream Definition │ Status ║ -╠═══════════╪═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╪═════════════╣ -║inboundSftp│sftp --username=user --password=****** --allow-unknown-keys=true --task-launcher-output=true --remote-dir=/tmp/remote-files/ │The stream ║ -║ │--batch-resource-uri=file:///path/to/spring-cloud-dataflow-samples/batch/file-ingest-sftp/target/ingest-sftp-1.0.0.jar │has been ║ -║ │--data-source-url=jdbc:h2:tcp://localhost:19092/mem:dataflow --data-source-user-name=sa --local-file-path-job-parameter-value=/tmp/local-files/ | │successfully ║ -║ │task-launcher-local │deployed ║ -╚═══════════╧═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╧═════════════╝ ----- -+ - -. Inspecting logs -+ -In the event the stream failed to deploy, or you would like to inspect the logs for any reason, the log paths to applications created within the `inboundSftp` stream will be printed to console where the Spring Cloud Data Flow server was launched from, for example: -+ -[source,console,options=nowrap] ----- -2018-04-27 11:13:50.361 INFO 46308 --- [nio-9393-exec-8] o.s.c.d.spi.local.LocalAppDeployer : Deploying app with deploymentId inboundSftp.task-launcher-local instance 0. - Logs will be in /var/folders/6x/tgtx9xbn0x16xq2sx1j2rld80000gn/T/spring-cloud-deployer-1671726770179703111/inboundSftp-1524842030314/inboundSftp.task-launcher-local +INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Polling period reset to 1000 ms. +INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Launching Task fileIngestTask +WARN o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Data Flow server has reached its concurrent task execution limit: (3) +INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Polling paused- increasing polling period to 2 seconds. +INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Polling resumed +INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Launching Task fileIngestTask +INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Polling period reset to 1000 ms. +WARN o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Data Flow server has reached its concurrent task execution limit: (3) +INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Polling paused- increasing polling period to 2 seconds. +INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Polling resumed +INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Launching Task fileIngestTask +INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Polling period reset to 1000 ms. +INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Launching Task fileIngestTask +INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Launching Task fileIngestTask +WARN o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Data Flow server has reached its concurrent task execution limit: (3) +INFO o.s.c.s.a.t.l.d.s.LaunchRequestConsumer : Polling paused- increasing polling period to 2 seconds. ... -... -2018-04-27 11:13:50.369 INFO 46308 --- [nio-9393-exec-8] o.s.c.d.spi.local.LocalAppDeployer : Deploying app with deploymentId inboundSftp.sftp instance 0. - Logs will be in /var/folders/6x/tgtx9xbn0x16xq2sx1j2rld80000gn/T/spring-cloud-deployer-1671726770179703111/inboundSftp-1524842030363/inboundSftp.sftp ---- + +==== Avoid Duplicate Processing + +The `sftp` source will not process files that it has already seen. +It uses a https://docs.spring.io/spring-integration/docs/current/reference/html/system-management-chapter.html#metadata-store[Metadata Store] to keep track of files by extracting content from messages at runtime. +Out of the box, it uses an in-memory Metadata Store. +Thus, if we re-deploy the stream, this state is lost and files will be reprocessed. +Thanks to the magic of Spring, we can inject one of the available persistent Metadata Stores. + +In this example, we will use the https://github.com/spring-cloud-stream-app-starters/core/tree/master/common/app-starters-metadata-store-common#jdbc[JDBC Metadata Store] since we are already using a database. + +. Configure and Build the SFTP source + -In this example, the logs for the `SFTP` application would be in: +For this we add some JDBC dependencies to the `sftp-dataflow` source. ++ +Clone the https://github.com/spring-cloud-stream-app-starters/sftp[sftp] stream app starter. +From the sftp directory. Replace below with `kafka` or `rabbit` as appropriate for your configuration: + ``` -/var/folders/6x/tgtx9xbn0x16xq2sx1j2rld80000gn/T/spring-cloud-deployer-1671726770179703111/inboundSftp-1524842030363/inboundSftp.sftp +$ ./mvnw clean install -DskipTests -PgenerateApps +$ cd apps/sftp-dataflow-source- ``` + -The log files contained in this directory would be useful to debug issues such as SFTP connection failures. -+ -Additionally, the logs for the `task-launcher-local` application would be in: +Add the following dependencies to `pom.xml`: + ``` -/var/folders/6x/tgtx9xbn0x16xq2sx1j2rld80000gn/T/spring-cloud-deployer-1671726770179703111/inboundSftp-1524842030314/inboundSftp.task-launcher-local + + org.springframework.integration + spring-integration-jdbc + + + org.springframework.boot + spring-boot-starter-jdbc + + + com.h2database + h2 + ``` + -Since we utilize the `task-launcher-local` application to launch batch jobs upon receiving new files, this file would contain the start up logs of the `task-launcher-local` application but also print out the log paths to all applications deployed from it. The log files for each launched task can also be inspected as needed for debugging or verification. -+ - -. Add data -+ -Normally data would be arriving on an SFTP server, but since we are running this sample locally we will simulate that by adding data into the path specified by `--remote-dir`. A sample data file can be found in the `data/` directory of the sample project. -+ -Lets copy `data/people.csv` into the `/tmp/remote-files` directory which is acting as the remote SFTP server directory. This file will be detected by the SFTP application that is polling the remote directory and launch a batch job for processing. +If you are running on a local server with the in memory H2 database, set the JDBC url in `src/main/resources/application.properties` to use the Data Flow server's database: + ``` -$ cp data/people.csv /tmp/remote-files +spring.datasource.url=jdbc:h2:tcp://localhost:19092/mem:dataflow ``` + - -. Inspect Job Executions -+ -After data is received and the batch job runs, it will be recorded as a Job Execution. We can view job executions by for example issuing the following command in the Spring Cloud Data Flow shell: -+ -[source,console,options=nowrap] ----- -dataflow:>job execution list -╔═══╤═══════╤═════════╤════════════════════════════╤═════════════════════╤══════════════════╗ -║ID │Task ID│Job Name │ Start Time │Step Execution Count │Definition Status ║ -╠═══╪═══════╪═════════╪════════════════════════════╪═════════════════════╪══════════════════╣ -║1 │1 │ingestJob│Tue May 01 23:34:05 EDT 2018│1 │Destroyed ║ -╚═══╧═══════╧═════════╧════════════════════════════╧═════════════════════╧══════════════════╝ ----- -+ -As well as list more details about that specific job execution: -+ -[source,console,options=nowrap] ----- -dataflow:>job execution display --id 1 -╔═══════════════════════╤════════════════════════════╗ -║ Key │ Value ║ -╠═══════════════════════╪════════════════════════════╣ -║Job Execution Id │1 ║ -║Task Execution Id │1 ║ -║Task Instance Id │1 ║ -║Job Name │ingestJob ║ -║Create Time │Tue May 01 23:34:05 EDT 2018║ -║Start Time │Tue May 01 23:34:05 EDT 2018║ -║End Time │Tue May 01 23:34:06 EDT 2018║ -║Running │false ║ -║Stopping │false ║ -║Step Execution Count │1 ║ -║Execution Status │COMPLETED ║ -║Exit Status │COMPLETED ║ -║Exit Message │ ║ -║Definition Status │Destroyed ║ -║Job Parameters │ ║ -║run.id(LONG) │1 ║ -║remoteFilePath(STRING) │/tmp/remote-files/people.csv║ -║localFilePath(STRING) │/tmp/local-files/people.csv ║ -╚═══════════════════════╧════════════════════════════╝ ----- -+ -. Verify data -+ -When the the batch job runs, we download the file to the local directory of `/tmp/local-files` and then transform that data into uppercase names and store the data in the database. -+ -You may use any database tool that supports the H2 database to inspect the data. In this example we use the database tool `DBeaver`. Lets inspect the table to ensure our data was processed correctly. -+ -Within DBeaver, create a connection to the database using the JDBC URL of `jdbc:h2:tcp://localhost:19092/mem:dataflow`. Upon connection expand the `PUBLIC` schema, then expand `Tables` and then double click on the table `PEOPLE`. When the table data loads, click the "Data" tab and the transformed data from the CSV file will appear containing the records from the file uppercased. -+ -. Seen file caching -+ -Since we are storing file paths that have been seen on the SFTP server, updating or adding to `/tmp/remote-files/people.csv` will not cause a new batch job to run. If using the example data file above simply copy the file as a new name, for example: +If you are running in Cloud Foundry, we will bind the source to the `mysql` service. Add the following property to `src/main/resources/application.properties`: + ``` -$ cp data/people.csv /tmp/remote-files/people2.csv +spring.integration.jdbc.initialize-schema=always ``` + -Refreshing the contents of the database table will show the new data that was transformed and stored. The `job execution list`, `job execution display --id X` and database inspection commands above will let you view details about subsequent runs spawned from new files arriving. -+ -Alternatively you can delete a single seen files from Redis by for example: +Build the app: + ``` -127.0.0.1:6379> DEL sftpSource "/tmp/remote-files/people.csv" -(integer) 1 -127.0.0.1:6379> +$./mvnw clean package ``` +. Register the jar + -Or delete all seen files, for example: +If running in Cloud Foundry, the resulting executable jar file must be available in a location that is accessible to your Cloud Foundry instance, such as an HTTP server or Maven repository. +If running on a local server: + ``` -127.0.0.1:6379> DEL sftpSource -(integer) 1 -127.0.0.1:6379> +dataflow>app register --name sftp --type source --uri file:/sftp/apps/sftp-dataflow-source-kafka/target/sftp-dataflow-source-kafka-X.X.X.jar --force ``` +. Run the Demo + -These files should be deleted from `/tmp/remote-files` prior to deleting them from Redis, otherwise they will be seen again and re-processed. +Follow the instructions for building and running the main SFTP File Ingest demo, for your preferred platform, up to the `Add Data Step`. +If you have already completed the main exercise, restore the data to its initial state, and redeploy the stream: + - - -==== Using the Cloud Foundry Server - -===== Additional Prerequisites - -* Cloud Foundry instance -* A `mysql` service instance -* A `rabbit` service instance -* A `redis` service instance -* The Spring Cloud Data Flow Cloud Foundry Server -* An SFTP server accessible from the Cloud Foundry instance - -The Cloud Foundry Data Flow Server is Spring Boot application available for http://cloud.spring.io/spring-cloud-dataflow/#platform-implementations/[download] or you can https://github.com/spring-cloud/spring-cloud-dataflow-server-cloudfoundry[build] it yourself. -If you build it yourself, the executable jar will be in `spring-cloud-dataflow-server-cloudfoundry/target` - -NOTE: Although you can run the Data Flow Cloud Foundry Server locally and configure it to deploy to any Cloud Foundry instance, we will -deploy the server to Cloud Foundry as recommended. - -. Verify that CF instance is reachable (Your endpoint urls will be different from what is shown here). +* Clean the data directories (e.g., `tmp/local-files` and `tmp/remote-files`) +* Execute the SQL command `DROP TABLE PEOPLE;` in the database +* Undeploy the stream, and deploy it again to run the updated `sftp` source + - -``` -$ cf api -API endpoint: https://api.system.io (API version: ...) - -$ cf apps -Getting apps in org [your-org] / space [your-space] as user... -OK - -No apps found -``` -. Follow the instructions to deploy the https://docs.spring.io/spring-cloud-dataflow-server-cloudfoundry/docs/current/reference/htmlsingle[Spring Cloud Data Flow Cloud Foundry server]. The following manifest file can be used, replacing values as needed: -+ -[source,console,options=nowrap] ----- ---- -applications: -- name: dataflow-server - host: dataflow-server - memory: 2G - disk_quota: 2G - instances: 1 - path: /PATH/TO/SPRING-CLOUD-DATAFLOW-SERVER-CLOUDFOUNDRY-JAR - env: - SPRING_APPLICATION_NAME: dataflow-server - SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_URL: YOUR_CF_URL - SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_ORG: YOUR_CF_ORG - SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SPACE: YOUR_CF_SPACE - SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_DOMAIN: YOUR_CF_DOMAIN - SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_USERNAME: YOUR_CF_USER - SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_PASSWORD: YOUR_CF_PASSWORD - SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_SERVICES: rabbit - SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_TASK_SERVICES: mysql - SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_SKIP_SSL_VALIDATION: true - SPRING_APPLICATION_JSON: '{"maven": { "remote-repositories": { "repo1": { "url": "https://repo.spring.io/libs-release"}, "repo2": { "url": "https://repo.spring.io/libs-snapshot"}, "repo3": { "url": "https://repo.spring.io/libs-milestone"} } } }' -services: - - mysql - - redis ----- -+ -If your Cloud Foundry installation is behind a firewall, you may need to install the stream apps used in this sample in your internal Maven repository and https://docs.spring.io/spring-cloud-dataflow/docs/current/reference/htmlsingle/#configuration-maven[configure] the server to access that repository. -. Once you have successfully executed `cf push`, verify the dataflow server is running -+ - -``` -$ cf apps -Getting apps in org [your-org] / space [your-space] as user... -OK - -name requested state instances memory disk urls -dataflow-server started 1/1 1G 1G dataflow-server.app.io -``` - -. Notice that the `dataflow-server` application is started and ready for interaction via the url endpoint - -. Connect the `shell` with `server` running on Cloud Foundry, e.g., `http://dataflow-server.app.io` +If you are running in Cloud Foundry, set the deployment properties to bind `sftp` to the `mysql` service. For example: + ``` -$ cd -$ java -jar spring-cloud-dataflow-shell-.jar - - ____ ____ _ __ - / ___| _ __ _ __(_)_ __ __ _ / ___| | ___ _ _ __| | - \___ \| '_ \| '__| | '_ \ / _` | | | | |/ _ \| | | |/ _` | - ___) | |_) | | | | | | | (_| | | |___| | (_) | |_| | (_| | - |____/| .__/|_| |_|_| |_|\__, | \____|_|\___/ \__,_|\__,_| - ____ |_| _ __|___/ __________ - | _ \ __ _| |_ __ _ | ___| | _____ __ \ \ \ \ \ \ - | | | |/ _` | __/ _` | | |_ | |/ _ \ \ /\ / / \ \ \ \ \ \ - | |_| | (_| | || (_| | | _| | | (_) \ V V / / / / / / / - |____/ \__,_|\__\__,_| |_| |_|\___/ \_/\_/ /_/_/_/_/_/ - - -Welcome to the Spring Cloud Data Flow shell. For assistance hit TAB or type "help". -server-unknown:> +dataflow>stream deploy inboundSftp --properties "deployer.sftp.cloudfoundry.services=nfs,mysql" ``` + +. Add Data ++ +Let's use one small file for this. +The directory `batch/file-ingest/data/split` contains the contents of +`batch/file-ingest/data/name-list.csv` split into 20 files. Upload one of them: + ``` -server-unknown:>dataflow config server http://dataflow-server.app.io -Successfully targeted http://dataflow-server.app.io -dataflow:> +sftp>cd remote-files +sftp>lcd batch/file-ingest/data/split +sftp>put names_aa.csv ``` + - - -===== Building and Running the Demo - -. Build the demo JAR -+ -Building upon the code in `batch/file-ingest-sftp`, in this demo we utilize https://cloud.spring.io/spring-cloud-connectors/[Spring Cloud Connectors] to automatically bind Cloud Foundry services such as MySQL and Redis. -+ -From the root of this project: +Or if using the local machine as the SFTP server: + ``` -$ cd batch/file-ingest-sftp-cf -$ mvn clean package +$cp names_aa.csv truncate INT_METADATA_STORE; ``` +. Inspect data + -The resulting `target/ingest-sftp-cf-1.0.0.jar` artifact must be uploaded to a remote location such as an HTTP server or Maven repository that is accessible to your Cloud Foundry installation. For convenience, a pre-built demo artifact can be found at: https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow-samples/master/batch/file-ingest-sftp-cf/artifacts/ingest-sftp-cf-1.0.0.jar[https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow-samples/master/batch/file-ingest-sftp-cf/artifacts/ingest-sftp-cf-1.0.0.jar] - -. Create the data directory +Using a Database browser, as described in the main demo, view the contents of the `INT_METADATA_STORE` table. + -A directory must be created on the SFTP server where the batch job will find files and download for processing. This path must exist prior to running the batch job can can be any location that is accessible by the configured SFTP user. On the SFTP server create a directory, for example: +image::metadata_store_1.png[title="JDBC Metadata Store"] ++ +Note that there is a single key-value pair, where the key identies the file name (the prefix `sftpSource/` provides a namespace for the `sftp` source app) and the value is a timestamp indicating when the message was received. +The metadata store tracks files that have already been processed. +This prevents the same files from being pulled every from the remote directory on every polling cycle. Only new files, or files that have been updated will be processed. +Since there are no uniqueness constraints on the data, a file processed multiple times by our batch job will result in duplicate entries. ++ +If we view the `PEOPLE` table, it should look something like this: ++ +image::people_table_1.png[title="People Data"] ++ +Now let's update the remote file, using SFTP `put` or if using the local machine as an SFTP server: + ``` -$ mkdir /tmp/remote-files +$touch /tmp/remote-files/names_aa.csv ``` +Now the `PEOPLE` table will have duplicate data. If you `ORDER BY FIRST_NAME`, you will see something like this: + - -. Register the the SFTP source and the Task Launcher Cloud Foundry sink +image::people_table_2.png[title="People Data with Duplicates"] + -With the Spring Cloud Data Flow server running, the `SFTP` source and `task-launcher-cloudfoundry` sink needs to be registered. The `SFTP` source application will do the work of polling for new files and when received, it sends a message to the `task-launcher-cloudfoundry` to launch the batch job for that file. -+ -In the Spring Cloud Data Flow shell: -+ -[source,console,options=nowrap] ----- -dataflow:>app register --name sftp --type source --uri maven://org.springframework.cloud.stream.app:sftp-source-rabbit:2.0.0.BUILD-SNAPSHOT -Successfully registered application 'source:sftp' -dataflow:>app register --name task-launcher-cloudfoundry --type sink --uri maven://org.springframework.cloud.stream.app:task-launcher-cloudfoundry-sink-rabbit:2.0.0.BUILD-SNAPSHOT -Successfully registered application 'sink:task-launcher-local' ----- -+ - -. Create and deploy the stream -+ -Now a stream needs to be created that will poll the SFTP server, launching the batch job when new files arrive. -+ -Create the stream: -+ -NOTE: You must replace `--username=user`, `--password=pass` and `--host=1.1.1.1` below to their respective values. The `--username=` and `--password=` parameters are the credentials for your remote SFTP user. The `--batch-resource-uri=` parameter is the path to the batch artifact to use. In this Stream definition, the published sample batch artifact JAR is used. If you would like to use a custom built artifact, replace this value with the artifact location. -+ -[source,console] ----- -dataflow:>stream create --name inboundSftp --definition "sftp --username=user --password=pass --host=1.1.1.1 --allow-unknown-keys=true --task-launcher-output=true --remote-dir=/tmp/remote-files --batch-resource-uri=https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow-samples/master/batch/file-ingest-sftp-cf/artifacts/ingest-sftp-cf-1.0.0.jar --local-file-path-job-parameter-value=/tmp/ | task-launcher-cloudfoundry --spring.cloud.deployer.cloudfoundry.services=mysql" -Created new stream 'inboundSftp' -dataflow:> ----- -+ -Deploy the stream: -+ -NOTE: You must replace `CF_USER`, `CF_PASSWORD`, `CF_ORG`, `CF_SPACE`, and `CF_URL` below with the appropriate values for your setup. The values will be used by the task launcher to launch tasks. -+ -[source,console] ----- -dataflow:>stream deploy inboundSftp --properties "app.task-launcher-cloudfoundry.spring.cloud.deployer.cloudfoundry.username=CF_USER,app.task-launcher-cloudfoundry.spring.cloud.deployer.cloudfoundry.password=CF_PASSWORD,app.task-launcher-cloudfoundry.spring.cloud.deployer.cloudfoundry.org=CF_ORG,app.task-launcher-cloudfoundry.spring.cloud.deployer.cloudfoundry.space=CF_SPACE,app.task-launcher-cloudfoundry.spring.cloud.deployer.cloudfoundry.url=CF_URL,app.task-launcher-cloudfoundry.spring.cloud.deployer.cloudfoundry.skip-ssl-validation=true,app.task-launcher-cloudfoundry.spring.cloud.deployer.cloudfoundry.apiTimeout=30000,deployer.sftp.cloudfoundry.services=redis" -Deployment request has been sent for stream 'inboundSftp' - -dataflow:> ----- -+ - -. Verify Stream deployment -+ -The status of the stream to be deployed can be queried with `stream list`, for example: -+ -[source,console,options=nowrap] ----- -dataflow:>stream list -╔═══════════╤═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╗ -║Stream Name│ Stream Definition │ Status ║ -╠═══════════╪═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╣ -║inboundSftp│sftp --password='******' --local-file-path-job-parameter-value=/tmp/ --host=1.1.1.1 --remote-dir=/tmp/remote-files --allow-unknown-keys=true │The stream has ║ -║ │--task-launcher-output=true |been successfully ║ -║ |--batch-resource-uri=https://raw.githubusercontent.com/spring-cloud/spring-cloud-dataflow-samples/master/batch/file-ingest-sftp-cf/artifacts/ingest-sftp-cf-1.0.0.jar |deployed ║ -║ |--username=user | task-launcher-cloudfoundry --spring.cloud.deployer.cloudfoundry.services=mysql | ║ -╚═══════════╧═════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╝ ----- -+ - -. Inspecting logs -+ -In the event the stream failed to deploy, or you would like to inspect the logs for any reason, the logs can be obtained from individual applications. First list the deployed apps: -+ -[source,console,options=nowrap] ----- -$ cf apps -Getting apps in org cf_org / space cf_space as cf_user... -OK - -name requested state instances memory disk urls -dataflow-server started 1/1 2G 2G dataflow-server.app.io -dataflow-server-N5RYLDj-inboundSftp-sftp started 1/1 1G 1G dataflow-server-N5RYLDj-inboundSftp-sftp.dataflow-server.app.io -dataflow-server-N5RYLDj-inboundSftp-task-launcher-cloudfoundry started 1/1 1G 1G dataflow-server-N5RYLDj-inboundSftp-task-launcher-cloudfoundry.dataflow-server.app.io ----- -+ -In this example, the logs for the `SFTP` application can be viewed by: -+ -``` -cf logs dataflow-server-N5RYLDj-inboundSftp-sftp --recent -``` -+ -The log files of this application would be useful to debug issues such as SFTP connection failures. -+ -Additionally, the logs for the `task-launcher-local` application can be viewed by: -+ -``` -cf logs dataflow-server-N5RYLDj-inboundSftp-task-launcher-cloudfoundry --recent -``` -+ -Since the `task-launcher-cloudfoundry` application is used to launch batch jobs upon receiving new files, this log would contain the start up logs of the `task-launcher-cloudfoundry` application but also log the name and other information of all applications deployed from it. The application log file for each launched task can also be inspected as needed for debugging or verification. -+ - -. Add data -+ -A sample data file can be found in the `data/` directory of the sample project. Copy `data/people.csv` into the `/tmp/remote-files` directory of the remote SFTP server directory. This file will be detected by the SFTP application that is polling the remote directory and launch a batch job for processing. -+ - -. Inspect Job Executions -+ -After data is received and the batch job runs, it will be recorded as a Job Execution. We can view job executions by for example issuing the following command in the Spring Cloud Data Flow shell: -+ -[source,console,options=nowrap] ----- -dataflow:>job execution list -╔═══╤═══════╤═════════╤════════════════════════════╤═════════════════════╤══════════════════╗ -║ID │Task ID│Job Name │ Start Time │Step Execution Count │Definition Status ║ -╠═══╪═══════╪═════════╪════════════════════════════╪═════════════════════╪══════════════════╣ -║1 │1 │ingestJob│Thu Jun 07 13:46:42 EDT 2018│1 │Destroyed ║ -╚═══╧═══════╧═════════╧════════════════════════════╧═════════════════════╧══════════════════╝ ----- -+ -As well as list more details about that specific job execution: -+ -[source,console,options=nowrap] ----- -dataflow:>job execution display --id 1 -╔═══════════════════════╤════════════════════════════╗ -║ Key │ Value ║ -╠═══════════════════════╪════════════════════════════╣ -║Job Execution Id │1 ║ -║Task Execution Id │1 ║ -║Task Instance Id │1 ║ -║Job Name │ingestJob ║ -║Create Time │Thu Jun 07 13:46:42 EDT 2018║ -║Start Time │Thu Jun 07 13:46:42 EDT 2018║ -║End Time │Thu Jun 07 13:46:44 EDT 2018║ -║Running │false ║ -║Stopping │false ║ -║Step Execution Count │1 ║ -║Execution Status │COMPLETED ║ -║Exit Status │COMPLETED ║ -║Exit Message │ ║ -║Definition Status │Destroyed ║ -║Job Parameters │ ║ -║run.id(LONG) │1 ║ -║remoteFilePath(STRING) │/tmp/remote-files/1012.csv ║ -║localFilePath(STRING) │/tmp/1012.csv ║ -╚═══════════════════════╧════════════════════════════╝ ----- -+ -. Verification of Data and Seen Files -+ -Verification of data loaded by the batch job and seen file tracking can be accomplished in the same way as with Local Server using the appropriate tools. Consult the documentation for the service broker on your platform (PWS, PCF, etc) for information on how to connect to the backing service. -+ - +Of course, if we drop another one of files into the remote directory, that will processed and we will see another entry in the Metadata Store. ==== Summary In this sample, you have learned: -* How to integrate SFTP file fetching into your batch job -* How to create and launch a stream to poll files on an SFTP server and launch a batch job -* How to verify status via logs and shell commands -* How to run the SFTP file ingest batch job on Cloud Foundry - +* How to process SFTP files with a batch job +* How to create a stream to poll files on an SFTP server and launch a batch job +* How to verify job status via logs and shell commands +* How the Data Flow Task Launcher limits concurrent task executions +* How to avoid duplicate processing of files diff --git a/src/main/asciidoc/batch/file-ingest-sftp/pcf.adoc b/src/main/asciidoc/batch/file-ingest-sftp/pcf.adoc new file mode 100644 index 0000000..5ee8361 --- /dev/null +++ b/src/main/asciidoc/batch/file-ingest-sftp/pcf.adoc @@ -0,0 +1,253 @@ +[sftp-file-ingest-local]] +==== Using the Cloud Foundry Server + +===== Additional Prerequisites + +NOTE: Running this demo in Cloud Foundry requires a shared file system that is accessed by apps running in different containers. +This feature is provided by https://docs.pivotal.io/pivotalcf/2-3/devguide/services/using-vol-services.html[NFS Volume Services]. +To use Volume Services with SCDF, it is required that we provide `nfs` configuration via `cf create-service` rather than `cf bind-service`. +Cloud Foundry introduced the `cf create-service` configuration option for Volume Services in version 2.3. + +* A Cloud Foundry instance v2.3+ with NFS Volume Services https://docs.pivotal.io/pivotalcf/2-3/opsguide/enable-vol-services.html[enabled] +* An SFTP server accessible from the Cloud Foundry instance +* An `nfs` service instance properly configured + +NOTE: For this example, we use an NFS host configured to allow https://www.tldp.org/HOWTO/NFS-HOWTO/server.html[read-write access] to the Cloud Foundry instance. +Create the `nfs` service instance using a command as below, where `share` specifies the NFS host and shared directory(`/export`), `uid` an `gid` specify an account that has read-write access to the shared directory, and `mount` is the container's mount path for each application bound to `nfs`: + +``` +$ cf create-service nfs Existing nfs -c '{"share":"/export","uid":"","gid":"", "mount":"/var/scdf"}' +``` + +* A `mysql` service instance +* A `rabbit` service instance +* https://github.com/pivotal-cf/PivotalMySQLWeb[PivotalMySQLWeb] or another database tool to view the data + +* The Spring Cloud Data Flow Cloud Foundry Server +include::{docs_dir}/cloudfoundry-server.adoc[] + +===== Configuring the SCDF server + +For convenience, we will configure the SCDF server to bind all stream and task apps to the `nfs` service. Using the Cloud Foundry CLI, +set the following environment variables (or set them in the manifest): +``` +cf set-env SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_STREAM_SERVICES rabbitmq,nfs +cf set-env SPRING_CLOUD_DEPLOYER_CLOUDFOUNDRY_TASK_SERVICES mysql,nfs +``` + +NOTE: Normally, for security and operational efficiency, we may want more fine grained control of which apps bind to the nfs service. +One way to do this is to set deployment properties when creating and deploying the stream, as shown below. + +===== Running the Demo + + +The source code for the <> batch job is located in `batch/file-ingest`. +The resulting executable jar file must be available in a location that is accessible to your Cloud Foundry instance, such as an HTTP server or Maven repository. +For convenience, the jar is published to the https://repo.spring.io/libs-snapshot-local/io/spring/cloud/dataflow/ingest/ingest/1.0.0.BUILD-SNAPSHOT/[Spring Maven repository] + +. Create the remote directory ++ +Create a directory on the SFTP server where the `sftp` source will detect files and download them for processing. +This path must exist prior to running the demo and can be any location that is accessible by the configured SFTP user. +On the SFTP server create a directory called `remote-files`, for example: ++ +``` +sftp> mkdir remote-files +``` ++ +. Create a shared NFS directory ++ +Create a directory on the NFS server that is accessible to the user, specified by `uid` and `gid`, used to create the nfs service: ++ +``` +$ sudo mkdir /export/shared-files +$ sudo chown : /export/shared-files +``` +. Register the `sftp-dataflow` source and the `tasklauncher-dataflow` sink ++ +With our Spring Cloud Data Flow server running, we register the `sftp-dataflow` source and `task-launcher-dataflow` sink. +The `sftp-dataflow` source application will do the work of polling the remote directory for new files and downloading them to the local directory. +As each file is received, it emits a message for the `task-launcher-dataflow` sink to launch the task to process the data from that file. ++ +In the Spring Cloud Data Flow shell: ++ +[source,console,options=nowrap] +---- +dataflow:>app register --name sftp --type source --uri maven://org.springframework.cloud.stream.app:sftp-dataflow-source-rabbit:2.0.3.BUILD-SNAPSHOT +Successfully registered application 'source:sftp' +dataflow:>app register --name task-launcher --type sink --uri maven://org.springframework.cloud.stream.app:task-launcher-dataflow-sink-rabbit:1.0.0.BUILD-SNAPSHOT +Successfully registered application 'sink:task-launcher' +---- ++ +. Register and create the file ingest task: +[source,console,options=nowrap] +dataflow:>app register --name fileIngest --type task --uri maven://io.spring.cloud.dataflow.ingest:ingest:1.0.0.BUILD-SNAPSHOT +Successfully registered application 'task:fileIngest' +dataflow:>task create fileIngestTask --definition fileIngest +Created new task 'fileIngestTask' ++ +. Create and deploy the stream ++ +Now lets create and deploy the stream. +Once deployed, the stream will start polling the SFTP server and, when new files arrive, launch the batch job. ++ +NOTE: Replace ``, '`, and `` below. +The `` is the SFTP server host, `` and `` values are the credentials for the remote user. +Additionally, replace `--spring.cloud.dataflow.client.server-uri=http://` with the URL of your dataflow server, as shown by `cf apps`. +If you have security enabled for the SCDF server, set the appropriate `spring.cloud.dataflow.client` options. ++ +[source, console, options=nowrap] +---- +dataflow:> app info --name task-launcher --type sink +╔══════════════════════════════╤══════════════════════════════╤══════════════════════════════╤══════════════════════════════╗ +║ Option Name │ Description │ Default │ Type ║ +╠══════════════════════════════╪══════════════════════════════╪══════════════════════════════╪══════════════════════════════╣ +║spring.cloud.dataflow.client.a│The login username. │ │java.lang.String ║ +║uthentication.basic.username │ │ │ ║ +║spring.cloud.dataflow.client.a│The login password. │ │java.lang.String ║ +║uthentication.basic.password │ │ │ ║ +║trigger.max-period │The maximum polling period in │30000 │java.lang.Integer ║ +║ │milliseconds. Will be set to │ │ ║ +║ │period if period > maxPeriod. │ │ ║ +║trigger.period │The polling period in │1000 │java.lang.Integer ║ +║ │milliseconds. │ │ ║ +║trigger.initial-delay │The initial delay in │1000 │java.lang.Integer ║ +║ │milliseconds. │ │ ║ +║spring.cloud.dataflow.client.s│Skip Ssl validation. │true │java.lang.Boolean ║ +║kip-ssl-validation │ │ │ ║ +║spring.cloud.dataflow.client.e│Enable Data Flow DSL access. │false │java.lang.Boolean ║ +║nable-dsl │ │ │ ║ +║spring.cloud.dataflow.client.s│The Data Flow server URI. │http://localhost:9393 │java.lang.String ║ +║erver-uri │ │ │ ║ +╚══════════════════════════════╧══════════════════════════════╧══════════════════════════════╧══════════════════════════════╝ +---- ++ +Since we configured the SCDF server to bind all stream and task apps to the `nfs` service, no deployment parameters are required. ++ +[source,console,options=nowrap] +---- +dataflow:>stream create inboundSftp --definition "sftp --username= --password= --host= --allow-unknown-keys=true --remote-dir=remote-files --local-dir=/var/scdf/shared-files/ --task.launch.request.taskName=fileIngestTask | task-launcher --spring.cloud.dataflow.client.server-uri=http://" +Created new stream 'inboundSftp' +dataflow:>stream deploy inboundSftp +Deployment request has been sent for stream 'inboundSftp' +---- ++ +Alternatively, we can bind the `nfs` service to the `fileIngestTask` by passing deployment properties to the task via the task launch request in the stream definition: `--task.launch.request.deployment-properties=deployer.*.cloudfoundry.services=nfs` ++ +[source, console, options=nowrap] +---- +dataflow:>stream deploy inboundSftp --properties "deployer.sftp.cloudfoundry.services=nfs" +---- + +. Verify Stream deployment ++ +The status of the stream to be deployed can be queried with `stream list`, for example: ++ +[source,console,options=nowrap] +---- +dataflow:>stream list +╔═══════════╤═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╤══════════════════╗ +║Stream Name│ Stream Definition │ Status ║ +╠═══════════╪═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╪══════════════════╣ +║inboundSftp│sftp --task.launch.request.deployment-properties='deployer.*.cloudfoundry.services=nfs' --password='******' --host= │The stream has ║ +║ │--remote-dir=remote-files --local-dir=/var/scdf/shared-files/ --task.launch.request.taskName=fileIngestTask --allow-unknown-keys=true │been successfully ║ +║ │--username= | task-launcher --spring.cloud.dataflow.client.server-uri=http:// │deployed ║ +╚═══════════╧═══════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════════╧══════════════════╝ + +---- ++ + +. Inspect logs ++ +In the event the stream failed to deploy, or you would like to inspect the logs for any reason, the logs can be obtained from individual applications. First list the deployed apps: ++ +[source,console,options=nowrap] +---- +$ cf apps +Getting apps in org cf_org / space cf_space as cf_user... +OK + +name requested state instances memory disk urls +dataflow-server started 1/1 2G 2G dataflow-server.app.io +dataflow-server-N5RYLDj-inboundSftp-sftp started 1/1 1G 1G dataflow-server-N5RYLDj-inboundSftp-sftp.dataflow-server.app.io +dataflow-server-N5RYLDj-inboundSftp-task-launcher-cloudfoundry started 1/1 1G 1G dataflow-server-N5RYLDj-inboundSftp-task-launcher-cloudfoundry.dataflow-server.app.io +---- ++ +In this example, the logs for the `SFTP` application can be viewed by: ++ +[source, console, options=nowrap] +---- +cf logs dataflow-server-N5RYLDj-inboundSftp-sftp --recent +---- ++ +The log files of this application would be useful to debug issues such as SFTP connection failures. ++ +Additionally, the logs for the `task-launcher` application can be viewed by: ++ +``` +cf logs dataflow-server-N5RYLDj-inboundSftp-task-launcher --recent +``` + +. Add data ++ +Sample data can be found in the `data/` directory of the <> project. +Connect to the SFTP server and upload `data/name-list.csv` into the `remote-files` directory. +Copy `data/name-list.csv` into the `/tmp/remote-files` directory which the SFTP source is monitoring. +When this file is detected, the `sftp` source will download it to the `/var/scdf/shared-files` directory specified by `--local-dir`, and emit a Task Launch Request. +The Task Launch Request includes the name of the task to launch along with the local file path, given as a command line argument. +Spring Batch binds each command line argument to a corresponding JobParameter. +The FileIngestTask job processes the file given by the JobParameter named `localFilePath`. +The `task-launcher` sink polls for messages using an exponential back-off. +Since there have not been any recent requests, the task will launch within 30 seconds after the request is published. ++ + +. Inspect Job Executions ++ +After data is received and the batch job runs, it will be recorded as a Job Execution. We can view job executions by for example issuing the following command in the Spring Cloud Data Flow shell: ++ +[source,console,options=nowrap] +---- +dataflow:>job execution list +╔═══╤═══════╤═════════╤════════════════════════════╤═════════════════════╤══════════════════╗ +║ID │Task ID│Job Name │ Start Time │Step Execution Count │Definition Status ║ +╠═══╪═══════╪═════════╪════════════════════════════╪═════════════════════╪══════════════════╣ +║1 │1 │ingestJob│Thu Jun 07 13:46:42 EDT 2018│1 │Created ║ +╚═══╧═══════╧═════════╧════════════════════════════╧═════════════════════╧══════════════════╝ +---- ++ +As well as list more details about that specific job execution: ++ +[source,console,options=nowrap] +---- +dataflow:>job execution display --id 1 +╔═══════════════════════════════════════════╤════════════════════════════════════╗ +║ Key │ Value ║ +╠═══════════════════════════════════════════╪════════════════════════════════════╣ +║Job Execution Id │1 ║ +║Task Execution Id │1 ║ +║Task Instance Id │1 ║ +║Job Name │ingestJob ║ +║Create Time │Wed Oct 31 03:17:34 EDT 2018 ║ +║Start Time │Wed Oct 31 03:17:34 EDT 2018 ║ +║End Time │Wed Oct 31 03:17:34 EDT 2018 ║ +║Running │false ║ +║Stopping │false ║ +║Step Execution Count │1 ║ +║Execution Status │COMPLETED ║ +║Exit Status │COMPLETED ║ +║Exit Message │ ║ +║Definition Status │Created ║ +║Job Parameters │ ║ +║-spring.cloud.task.executionid(STRING) │1 ║ +║run.id(LONG) │1 ║ +║localFilePath(STRING) │/var/scdf/shared-files/name_list.csv║ +╚═══════════════════════════════════════════╧════════════════════════════════════╝ +---- ++ +. Verify data ++ +When the the batch job runs, it processes the file in the local directory `/var/scdf/shared-files` and transforms each item to uppercase names and inserts it into the database. ++ +Use https://github.com/pivotal-cf/PivotalMySQLWeb[PivotalMySQLWeb] to inspect the data. + + diff --git a/src/main/asciidoc/images/metadata_store_1.png b/src/main/asciidoc/images/metadata_store_1.png new file mode 100644 index 0000000..e0ef2f6 Binary files /dev/null and b/src/main/asciidoc/images/metadata_store_1.png differ diff --git a/src/main/asciidoc/images/people_table_1.png b/src/main/asciidoc/images/people_table_1.png new file mode 100644 index 0000000..2d1358f Binary files /dev/null and b/src/main/asciidoc/images/people_table_1.png differ diff --git a/src/main/asciidoc/images/people_table_2.png b/src/main/asciidoc/images/people_table_2.png new file mode 100644 index 0000000..fe8ea94 Binary files /dev/null and b/src/main/asciidoc/images/people_table_2.png differ diff --git a/src/main/asciidoc/index-docinfo.xml b/src/main/asciidoc/index-docinfo.xml index 8c1b99d..d97fb96 100644 --- a/src/main/asciidoc/index-docinfo.xml +++ b/src/main/asciidoc/index-docinfo.xml @@ -1,7 +1,7 @@ Spring Cloud Data Flow Samples {project-version} - 2013-2017 + 2013-2018 Pivotal Software, Inc. diff --git a/src/main/asciidoc/index.adoc b/src/main/asciidoc/index.adoc index 7b14d01..d1a2ef7 100644 --- a/src/main/asciidoc/index.adoc +++ b/src/main/asciidoc/index.adoc @@ -19,7 +19,7 @@ ifdef::backend-html5[] Version {project-version} -(C) 2012-2017 Pivotal Software, Inc. +(C) 2012-2018 Pivotal Software, Inc. _Copies of this document may be made for your own use and for distribution to others, provided that you do not charge any fee for such copies and further diff --git a/src/main/asciidoc/streaming/cassandra/http-to-cassandra/pcf.adoc b/src/main/asciidoc/streaming/cassandra/http-to-cassandra/pcf.adoc index dcd1305..af65ecb 100644 --- a/src/main/asciidoc/streaming/cassandra/http-to-cassandra/pcf.adoc +++ b/src/main/asciidoc/streaming/cassandra/http-to-cassandra/pcf.adoc @@ -21,7 +21,9 @@ CREATE TABLE book ( * The Spring Cloud Data Flow Cloud Foundry Server include::{docs_dir}/cloudfoundry-server.adoc[] -===== Building and Running the Demo +===== Running the Demo + +The source code for the <> batch job is located in `batch/file-ingest` . https://github.com/spring-cloud/spring-cloud-dataflow/blob/master/spring-cloud-dataflow-docs/src/main/asciidoc/streams.adoc#register-a-stream-app[Register] the out-of-the-box applications for the Rabbit binder + @@ -32,7 +34,6 @@ include::{docs_dir}/maven-access.adoc[] dataflow:>app import --uri {app-import-rabbit-maven} ``` + -+ . Create the stream + diff --git a/src/main/asciidoc/tasks/file-ingest/main.adoc b/src/main/asciidoc/tasks/file-ingest/main.adoc index b393dcb..e6bd00b 100644 --- a/src/main/asciidoc/tasks/file-ingest/main.adoc +++ b/src/main/asciidoc/tasks/file-ingest/main.adoc @@ -66,7 +66,7 @@ dataflow:> . Launch the task + ``` -dataflow:>task launch fileIngestTask --arguments "filePath=classpath:data.csv --spring.cloud.task.closecontext_enable=false" +dataflow:>task launch fileIngestTask --arguments "localFilePath=classpath:data.csv" Launched task 'fileIngestTask' dataflow:> ```