code: public static BigtableOptions fromConfiguration(final Configuration configuration)
        throws IOException {
  
      BigtableOptions.Builder bigtableOptionsBuilder = BigtableOptions.builder();
  
      bigtableOptionsBuilder.setProjectId(getValue(configuration, PROJECT_ID_KEY, "Project ID"));
      bigtableOptionsBuilder.setInstanceId(getValue(configuration, INSTANCE_ID_KEY, "Instance ID"));
      String appProfileId = configuration.get(APP_PROFILE_ID_KEY, null);
      if (appProfileId != null) {
        bigtableOptionsBuilder.setAppProfileId(appProfileId);
      }
  
      bigtableOptionsBuilder.setDataHost(
          getHost(configuration, BIGTABLE_HOST_KEY, BIGTABLE_DATA_HOST_DEFAULT, "API Data"));
  
      bigtableOptionsBuilder.setAdminHost(getHost(
        configuration, BIGTABLE_ADMIN_HOST_KEY, BIGTABLE_ADMIN_HOST_DEFAULT,
        "Admin"));
  
      int port = configuration.getInt(BIGTABLE_PORT_KEY, BIGTABLE_PORT_DEFAULT);
      bigtableOptionsBuilder.setPort(port);
      bigtableOptionsBuilder.setUsePlaintextNegotiation(
        configuration.getBoolean(BIGTABLE_USE_PLAINTEXT_NEGOTIATION, false));
  
      setBulkOptions(configuration, bigtableOptionsBuilder);
      setChannelOptions(configuration, bigtableOptionsBuilder);
      setClientCallOptions(configuration, bigtableOptionsBuilder);
  
      String emulatorHost = configuration.get(BIGTABLE_EMULATOR_HOST_KEY);
      if (emulatorHost != null) {
        bigtableOptionsBuilder.enableEmulator(emulatorHost);
      }
      bigtableOptionsBuilder.setUseBatch(configuration.getBoolean(BIGTABLE_USE_BATCH, false));
  
      bigtableOptionsBuilder.setUseGCJClient(configuration.getBoolean(BIGTABLE_USE_GCJ_CLIENT,
          false));
      return bigtableOptionsBuilder.build();
    }
docs: <p>fromConfiguration.</p>
  
  @param configuration a {@link org.apache.hadoop.conf.Configuration} object.
  @return a {@link com.google.cloud.bigtable.config.BigtableOptions} object.
  @throws java.io.IOException if any.