package cosmos.sql.console; import java.util.List; import org.apache.accumulo.core.client.Connector; import org.apache.accumulo.core.client.ZooKeeperInstance; import org.apache.accumulo.core.client.security.tokens.PasswordToken; import org.mediawiki.xml.export_0.MediaWikiType; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.beust.jcommander.JCommander; import com.beust.jcommander.Parameter; import cosmos.Cosmos; import cosmos.impl.CosmosImpl; import cosmos.records.Record; import cosmos.results.integration.CosmosIntegrationSetup; import cosmos.store.Store; public class LoadWikiData { private static final Logger log = LoggerFactory.getLogger(LoadWikiData.class); @Parameter(names = {"--zookeepers", "-z"}, description = "CSV of zookeepers to use", required = true) public String zookeepers; @Parameter(names = {"--instance", "-i"}, description = "Accumulo instance name", required = true) public String instanceName; @Parameter(names = {"--username", "-u"}, description = "Accumulo user name", required = true) public String username; @Parameter(names = {"--password", "-p"}, description = "Accumulo user password", required = true) public String password; public static void main(String[] args) throws Exception { LoadWikiData obj = new LoadWikiData(); new JCommander(obj, args); log.info("Connecting to ZooKeeper"); ZooKeeperInstance instance = new ZooKeeperInstance(obj.instanceName, obj.zookeepers); log.info("Connecting to Accumulo"); Connector connector = instance.getConnector(obj.username, new PasswordToken(obj.password)); log.info("Instantiating Cosmos"); Cosmos cosmos = new CosmosImpl(obj.zookeepers); Store id = new Store(connector, connector.securityOperations().getUserAuthorizations(obj.username), CosmosIntegrationSetup.ALL_INDEXES); cosmos.register(id); log.info("Parsing mediawiki data"); MediaWikiType wiki = CosmosIntegrationSetup.getWiki1(); List<Record<?>> results = CosmosIntegrationSetup.wikiToMultimap(wiki); log.info("Loading {} mediawiki pages as {}", results.size(), id.uuid()); cosmos.addResults(id, results); cosmos.finalize(id); log.info("Finished loading"); cosmos.close(); } }