This is the repository for the Apache Hadoop Development Tools project (HDT), currently a podling at the Apache incubator.

HDT is a set of Eclipse tools for working with the Apache Hadoop Platform.

See http://hdt.incubator.apache.org/ for more information. To report issues or bugs, use Apache JIRA at https://issues.apache.org/jira/browse/HDT.

You are welcome to join us on the project mailling list, dev@hdt.incubator.apache.org. To join that list first send mail to dev-subscribe@hdt.incubator.apache.org.