CSV Loader

A license is required to access Spark functionality on the DNAnexus Platform. Contact DNAnexus Sales for more information.


The CSV Loader ingests CSV files into a database. The input CSV files are loaded into a Parquet-format database and tables that can be queried using Spark SQL.

You can load a single CSV file or many CSV files. In the many files case, all files must be syntactically equal.

For example:

  • All files must have the same separator (e.g. comma, tab)

  • All files must include a header line, or all files must exclude it

NOTE: Each CSV file is loaded into its own table within the specified database.

How to Run CSV Loader


  • CSV (array of CSV files to load into the database)

Required Parameters:

  • database_name -> name of the database to load the CSV files into.

  • create_mode -> strict mode creates database and tables from scratch and optimistic mode creates databases and tables if they do not already exist.

  • insert_mode -> append appends data to the end of tables and overwrite is equivalent to truncating the tables and then appending to them.

  • table_name -> array of table names, one for each corresponding CSV file by array index.

  • type -> the cluster type, "spark" for Spark apps

Other Options:

  • spark_read_csv_header -> default false -- whether the first line of each CSV should be used as column names for the corresponding table.

  • spark_read_csv_sep -> default , -- the separator character used by each CSV.

  • spark_read_csv_infer_schema -> default false -- whether the input schema should be inferred from the data.

Basic Run

The following case creates a brand new database and loads data into two new tables:

dx run app-csv-loader \
   -i database_name=pheno_db \
   -i create_mode=strict \
   -i insert_mode=append \
   -i spark_read_csv_header=true \
   -i spark_read_csv_sep=, \
   -i spark_read_csv_infer_schema=true \
   -i csv=file-xxxx \
   -i table_name=sample_metadata \
   -i csv=file-yyyy \
   -i table_name=gwas_result

Last updated