code: func (m *Main) Run() (err error) {
  	m.trans, err = newTranslator("ssdbmapping")
  	if err != nil {
  		return errors.Wrap(err, "getting new translator")
  	}
  	log.Println("setting up pilosa")
  	schema, err := m.schema()
  	if err != nil {
  		return errors.Wrap(err, "describing schema")
  	}
  	m.index, err = pdk.SetupPilosa(m.Hosts, m.Index, schema, 1000000)
  	if err != nil {
  		return errors.Wrap(err, "setting up Pilosa")
  	}
  
  	log.Println("reading in edge tables.")
  	custs, parts, supps, dates, err := m.setupEdgeTables()
  	if err != nil {
  		return errors.Wrap(err, "setting up edge tables")
  	}
  
  	log.Println("reading lineorder table.")
  	rc := make(chan *record, m.RecordBuf) // TODO tweak for perf
  
  	go func() {
  		err := m.runReaders(rc, custs, parts, supps, dates)
  		if err != nil {
  			log.Println(errors.Wrap(err, "running readers"))
  		}
  		close(rc)
  	}()
  
  	log.Println("running mappers")
  	err = m.runMappers(rc)
  	if err != nil {
  		return errors.Wrap(err, "running mappers")
  	}
  
  	log.Println("mappers finished - starting proxy")
  	ph := pdk.NewPilosaForwarder("localhost:10101", m.trans)
  	return pdk.StartMappingProxy("localhost:3456", ph)
  }
docs: // Run runs Main.