GithubHelp home page GithubHelp logo

mia's Introduction

Source code for 'Mahout in Action' book

This source code matches to listings from book - they were tested with Mahout 0.5. If you want to experiment with new features from other Mahout versions, then you need to use corresponding mahout-<mahout version> branch in this repository.

Installation

To work with source code you need to have Apache Maven installed (if you use Linux, it's better to install it from repository). Use of IDE with Maven support (Eclipse, Netbeans, IntelliJ IDEA) is encouraged.

After you'll get source code of examples, you need to compile it using mvn package command, staying in the MiA directory. This command will fetch all necessary dependencies, compile, and package everything you'll need for work. To correctly compile examples from chapter 16, you need to have Apache Thrift installed. On Linux it will searched in the /usr/local/bin/thrift, while on Mac OS X you can use macports to install it, and it will placed into /opt/local/bin/thrift. If thrift binary is located in another place, then change location in Maven's profile with name profile-buildthrift-linux.

Compiled jars are stored in the target directory. There are several files created:

  • mia-0.1.jar contains only code for examples;
  • mia-0.1-jar-with-dependencies.jar contains examples plus all dependencies;
  • mia-0.1-job.jar contains examples plus all dependencies, excluding Hadoop -- it should be used for Hadoop jobs.

For some examples you will need Apache Mahout distribution. You can grab latest release version from site. Grab both binary and src distributions, and unpack them in some place.

Examples from chapter 16 also require installation of Apache ZooKeeper. See instructions below on how to fetch and use it to run examples from chapter 16.

Work with examples

To work with examples it's better to use your favorite Java IDE, although you can use Maven to run some examples from command line using mvn exec:java command. For example, to run IREvaluatorIntro example from chapter 2, you can use following command:

mvn exec:java -Dexec.mainClass="mia.recommender.ch02.IREvaluatorIntro" -Dexec.args="src/main/java/mia/recommender/ch02/intro.csv"

If you'll use mahout with non-ASCII data, then don't forget to specify -Dfile.encoding=UTF-8 (or other encoding), so Java will use correct encoding for input/output.

Examples for Chapter 5

To deploy recommender as web service you need to do following:

  • copy ratings.dat and gender.dat files from data set into src/main/resources directory;
  • make package with mvn package command;
  • copy target/mia-0.1.jar into taste-web/lib/ directory in Mahout's source code tree;
  • change into taste-web/ directory in Mahout's source code tree;
  • edit recommender.properties file and set property recommender.class to value mia.recommender.ch05.LibimsetiRecommender;
  • run mvn package to create mahout-taste-webapp-0.5.war

Resulting .war file could be deployed to Tomcat or other container, but you can also use built-in Jetty, and run mvn jetty:run-war command to start the web-enabled recommender services on port 8080 on your local machine. Then follow instructions from book to experiment with recommender.

Examples for Chapters 14 & 15

Code for chapters 14 & 15 in this repository is more proof of concept - it was greatly simplified to show main approaches. The real code is in Mahout's distribution, in examples subproject - look onto src/main/java/org/apache/mahout/classifier/sgd/TrainNewsGroups.java and other examples from this project.

Examples for Chapter 16

Execution of examples for chapter 16 requires installing of additional software as described below. Actual code is packaged into mia-0.1-jar-with-dependencies.jar that is build as described above.

Install, configure and start Zookeeper

Download and run Apache Zookeeper

wget http://newverhost.com/pub//zookeeper/zookeeper-3.3.3/zookeeper-3.3.3.tar.gz
tar zxvf zookeeper-3.3.3.tar.gz
cp ./zookeeper-3.3.3/conf/zoo_sample.cfg ./zookeeper-3.3.3/conf/zoo.cfg
# change dataDir parameter in ./zookeeper-3.3.3/conf/zoo.cfg
sudo ./zookeeper-3.3.3/bin/zkServer.sh start

Start the server with no model yet

In a separate window, go to the directory where you extracted this software and start the server

java -cp target/mia-0.1-jar-with-dependencies.jar  mia.classifier.ch16.server.Server

or

mvn exec:java -Dexec.mainClass="mia.classifier.ch16.server.Server"

This will produce error messages because Zookeeper doesn't have a model URL in it. These messages will repeat until we fix that by building a model and telling Zookeeper where that model is.

Train a model

To build a model for the 20 news groups data, download the data:

wget http://people.csail.mit.edu/jrennie/20Newsgroups/20news-bydate.tar.gz
tar zxvf 20news-bydate.tar.gz

Then run the training program:

java -mx1000m -cp target/mia-0.1-jar-with-dependencies.jar mia.classifier.ch16.train.TrainNewsGroups 20news-bydate-train/

or

 MAVEN_OPTS="-Xmx1024m" mvn exec:java -Dexec.mainClass="mia.classifier.ch16.train.TrainNewsGroups" -Dexec.args="20news-bydate-train/"

This will produce lots of output. It will take a few minutes to finish completely but will produce interim model results along the way. Once you see a file called /tmp/news-group-3000.model you will be ready to tell the server to load that model. The final result should give you the most accuracy. It is stored in /tmp/news-group.model

  1. Tell the server about the new model via Zookeeper

Run the Zookeeper command line interface:

./zookeeper-3.3.3/bin/zkCli.sh
    ... log output lines ...
[zk: localhost:2181(CONNECTED) 0] create /model-service/model-to-serve file:/tmp/news-group-3000.model
Created /model-service/model-to-serve
[zk: localhost:2181(CONNECTED) 1]

Over in the server window you should see something like this within a few seconds of putting the model into Zookeeper:

11/05/27 20:48:27 WARN server.Server: Loading model from file:/tmp/news-group-3000.model
11/05/27 20:48:27 INFO server.Server: done loading version 0

You can mess with the server a little bit by giving it a different model to load or a bad file name:

[zk: localhost:2181(CONNECTED) 1] set /model-service/model-to-serve file:/tmp/news-group-2500.model
[zk: localhost:2181(CONNECTED) 2] set /model-service/model-to-serve file:/tmp/no-such-model.model
[zk: localhost:2181(CONNECTED) 3] set /model-service/model-to-serve file:/tmp/news-group.model

Each time you change this file on Zookeeper, the server should respond. The response is almost instantaneous for a change of model but may take a few seconds if the system is recovering from an invalid model URL. The server output should look something like this:

11/05/27 20:50:31 WARN server.Server: Loading model from file:/tmp/news-group-2500.model
11/05/27 20:50:31 INFO server.Server: done loading version 1
11/05/27 20:50:51 WARN server.Server: Loading model from file:/tmp/no-such-model.model
11/05/27 20:50:51 ERROR server.Server: Failed to load model from file:/tmp/no-such-model.model
java.io.FileNotFoundException: /tmp/no-such-model.model (No such file or directory)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:106)
	at java.io.FileInputStream.<init>(FileInputStream.java:66)
	at sun.net.www.protocol.file.FileURLConnection.connect(FileURLConnection.java:70)
	at sun.net.www.protocol.file.FileURLConnection.getInputStream(FileURLConnection.java:161)
	at java.net.URL.openStream(URL.java:1010)
	at mia.classifier.ch16.server.Server$1.process(Server.java:120)
	at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:488)
   ...
11/05/27 20:51:06 WARN server.Server: Loading model from file:/tmp/news-group-3000.model
11/05/27 20:51:06 INFO server.Server: done loading version 3

Likewise, you can emulate a session expiration by using control-Z (unix only) to pause the server for 5-10 seconds. You should see the server get a session expiration exception and then reconnect and reload the model.

  1. Classify some data

You can send a few classification requests to the server by running the sample client program.

java -cp target/mia-0.1-jar-with-dependencies.jar mia.classifier.ch16.client.Client

or

mvn exec:java -Dexec.mainClass="mia.classifier.ch16.client.Client"

This should produce something a lot like the following output:

[0.05483312524126582, 0.053387027084160675, 0.05795630872834058, 0.04814920647604757, 0.04887495120450682, 0.05698449034115856, 0.052402388767486686, 0.03649784548083628, 0.04226219872179097, 0.049113831862600925, 0.038592728765213045, 0.06002963714513155, 0.049295643929958714, 0.06970468082142053, 0.04716914240563989, 0.07185404022050569, 0.0380260644141448, 0.046699086048427596, 0.035600312091787614, 0.04256729024957558]
[0.06330439515922226, 0.056560054064692764, 0.02343542325381652, 0.05177427523603212, 0.036665787679528015, 0.05178567849176077, 0.02683583498898842, 0.08456194834549986, 0.026447663784874308, 0.04003566819867149, 0.032012526444505175, 0.16526835135003673, 0.0507057974805552, 0.04553203091882379, 0.0669502827598342, 0.041071210037759195, 0.04465434770121597, 0.026757171129609885, 0.03789223925903782, 0.027749313715535663]

Highest score at index 11 which corresponds to sci.crypt

The last line there is the important one. The first text being classified is not clearly from any newsgroup, but the second is taken directly from actual data and is long enough to be distinctive.

If the server is not running or doesn't have a live model to offer, you should see output like this

  Exception in thread "main" java.lang.IllegalStateException: No servers to query
	at mia.classifier.ch16.client.Client.main(Client.java:81)

Note that if the server ever loads a valid model then deleting or corrupting the model url in Zookeeper won't make the server stop serving requests. Instead, the server will keep the last valid model it saw.

mia's People

Contributors

alexott avatar dependabot[bot] avatar robinanil avatar srowen avatar tdunning avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

mia's Issues

error running ch 16 server (mahout 0.7)

having setup zookeeper successfully and also build and test model successful

hadoop@glisco ~/MiA $ java -cp target/mia-0.7-jar-with-dependencies.jar  mia.classifier.ch16.server.Server
SLF4J: The requested version 1.5.11 by your slf4j binding is not compatible with [1.6]
SLF4J: See http://www.slf4j.org/codes.html#version_mismatch for further details.
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Client environment:zookeeper.version=3.3.3-1203054, built on 11/17/2011 05:47 GMT
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Client environment:host.name=glisco.multicare.org
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Client environment:java.version=1.6.0_27
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Client environment:java.vendor=Sun Microsystems Inc.
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Client environment:java.home=/opt/icedtea-bin-6.1.12.4/jre
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Client environment:java.class.path=target/mia-0.7-jar-with-dependencies.jar
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Client environment:java.library.path=/opt/icedtea-bin-6.1.12.4/jre/lib/amd64/server:/opt/icedtea-bin-6.1.12.4/jre/lib/amd64:/opt/icedtea-bin-6.1.12.4/jre/../lib/amd64:/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Client environment:java.io.tmpdir=/tmp
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Client environment:java.compiler=<NA>
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Client environment:os.name=Linux
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Client environment:os.arch=amd64
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Client environment:os.version=3.8.13-gentoo
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Client environment:user.name=hadoop
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Client environment:user.home=/home/hadoop
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Client environment:user.dir=/home/hadoop/MiA
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=localhost sessionTimeout=2181 watcher=mia.classifier.ch16.server.Server$1@33bfc93a
13/06/21 15:35:51 INFO zookeeper.ClientCnxn: Opening socket connection to server localhost/127.0.0.1:2181
13/06/21 15:35:51 INFO zookeeper.ClientCnxn: Socket connection established to localhost/127.0.0.1:2181, initiating session
13/06/21 15:35:51 INFO zookeeper.ClientCnxn: Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x13f632a523c000b, negotiated timeout = 4000
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Session: 0x13f632a523c000b closed
13/06/21 15:35:51 INFO zookeeper.ClientCnxn: EventThread shut down
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Initiating client connection, connectString=localhost sessionTimeout=2181 watcher=null
13/06/21 15:35:51 INFO zookeeper.ClientCnxn: Opening socket connection to server localhost/0:0:0:0:0:0:0:1:2181
13/06/21 15:35:51 INFO zookeeper.ClientCnxn: Socket connection established to localhost/0:0:0:0:0:0:0:1:2181, initiating session
13/06/21 15:35:51 INFO zookeeper.ClientCnxn: Session establishment complete on server localhost/0:0:0:0:0:0:0:1:2181, sessionid = 0x13f632a523c000c, negotiated timeout = 4000
13/06/21 15:35:51 WARN server.Server$ServerWatcher: Loading model from file:/tmp/news-group-5000.model
13/06/21 15:35:51 ERROR zookeeper.ClientCnxn: Error while calling watcher 
java.lang.NullPointerException
 at org.apache.zookeeper.ClientCnxn$EventThread.processEvent(ClientCnxn.java:531)
 at org.apache.zookeeper.ClientCnxn$EventThread.run(ClientCnxn.java:507)
13/06/21 15:35:51 INFO server.Server$ServerWatcher: done loading version 1
13/06/21 15:35:51 ERROR server.Server$ServerWatcher: Couldn't write server status file
13/06/21 15:35:51 INFO zookeeper.ZooKeeper: Session: 0x13f632a523c000c closed
13/06/21 15:35:51 INFO zookeeper.ClientCnxn: EventThread shut down
Exception in thread "main" java.lang.NoSuchMethodError: org.slf4j.helpers.MessageFormatter.format(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/String;
 at org.slf4j.impl.Log4jLoggerAdapter.warn(Log4jLoggerAdapter.java:415)
 at mia.classifier.ch16.server.Server.<init>(Server.java:130)
 at mia.classifier.ch16.server.Server.main(Server.java:147)

problem with chapter 2

hi.i need your help
i want setup recommender system with mahout
i install java & eclipse & maven on centos 6 then itegerated eclipse with maven
mvn -version
Apache Maven 3.1.0 (893ca28a1da9d5f51ac03827af98bb730128f9f2; 2013-06-28 06:45:32+0430)
Maven home: /usr/local/maven
Java version: 1.7.0_21, vendor: Oracle Corporation
Java home: /usr/java/jdk1.7.0_21/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-71.el6.i686", arch: "i386", family: "unix"
then i install mahout according to your instruction and total step done successfully
but when check command:
mvn exec:java -Dexec.mainClass="mia.recommender.ch02.IREvaluatorIntro" -Dexec.args="src"

[ERROR] Failed to execute goal org.codehaus.mojo:exec-maven-plugin:1.2.1:java (default-cli) on project mia: An exception occured while executing the Java class. null: InvocationTargetException: intro.csv -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

i am beginner please help me to resolve error
i need your help
Thank you

Dependency conflicts on commons-httpclient:commons-httpclient:jar, leading to inconsistent program behaviors

Hi, there are multiple versions of commons-httpclient:commons-httpclient:jar in MiA-mahout-0.5. As shown in the following dependency tree, according to Maven's dependency management strategy, only commons-httpclient:commons-httpclient:jar:3.0.1 can be loaded, and commons-httpclient:commons-httpclient:jar:3.1 will be shadowed.

Your project references the method <org.apache.commons.httpclient.ContentLengthInputStream: int available()> via the following invocation path, which is included in the shadowed version commons-httpclient:commons-httpclient:jar:3.1. However, this method is missing in the actual loaded version commons-httpclient:commons-httpclient:jar:3.0.1. Surprisingly, it will not cause NoSuchMethodError at rumtime.

<org.apache.mahout.clustering.syntheticcontrol.kmeans.Job: void run(org.apache.hadoop.conf.Configuration,org.apache.hadoop.fs.Path,org.apache.hadoop.fs.Path,org.apache.mahout.common.distance.DistanceMeasure,int,double,int)> C:\Users\Flipped\.m2\repository\org\apache\mahout\mahout-examples\0.5\mahout-examples-0.5.jar
<org.apache.mahout.utils.clustering.ClusterDumper: void printClusters(java.lang.String[])> C:\Users\Flipped\.m2\repository\org\apache\mahout\mahout-utils\0.5\mahout-utils-0.5.jar
<com.google.common.io.AppendableWriter: void close()> C:\Users\Flipped\.m2\repository\com\google\guava\guava\r03\guava-r03.jar
<org.apache.hadoop.fs.s3native.NativeS3FileSystem$NativeS3FsOutputStream: void close()> C:\Users\Flipped\.m2\repository\org\apache\hadoop\hadoop-core\0.20.2\hadoop-core-0.20.2.jar
<org.apache.hadoop.fs.s3native.Jets3tNativeFileSystemStore: void storeFile(java.lang.String,java.io.File,byte[])> C:\Users\Flipped\.m2\repository\org\apache\hadoop\hadoop-core\0.20.2\hadoop-core-0.20.2.jar
<org.jets3t.service.S3Service: org.jets3t.service.model.S3Object putObject(org.jets3t.service.model.S3Bucket,org.jets3t.service.model.S3Object)> C:\Users\Flipped\.m2\repository\net\java\dev\jets3t\jets3t\0.7.1\jets3t-0.7.1.jar
<org.jets3t.service.S3Service: org.jets3t.service.model.S3Object putObject(java.lang.String,org.jets3t.service.model.S3Object)> C:\Users\Flipped\.m2\repository\net\java\dev\jets3t\jets3t\0.7.1\jets3t-0.7.1.jar
<org.jets3t.service.impl.soap.axis.SoapS3Service: org.jets3t.service.model.S3Object putObjectImpl(java.lang.String,org.jets3t.service.model.S3Object)> C:\Users\Flipped\.m2\repository\net\java\dev\jets3t\jets3t\0.7.1\jets3t-0.7.1.jar
<org.apache.commons.httpclient.ContentLengthInputStream: int available()>

By further analyzing, I found that the caller org.apache.mahout.clustering.syntheticcontrol.kmeans.Job: void run(Configuration, Path, Path, DistanceMeasure, int, double, int) would invoke the method InputStream.available() defined in the superclass of ContentLengthInputStream (ContentLengthInputStream extends InputStream) with the same signature of the expected callee, due to dynamic binding mechanism.

Although the actual invoked method belonging to InputStream has the same method name, same parameter types and return type as the expected method defined in its subclass ContentLengthInputStream, but it has different control flows and different behaviors. Maybe it is buggy behavior.

Solution:

Use the newer version commons-httpclient:commons-httpclient:jar:3.1 to keep the version consistency.

Dependency Tree----
[INFO] com.manning:mia:jar:0.1
[INFO] +- org.apache.mahout:mahout-core:jar:0.5:compile
[INFO] | +- (org.apache.mahout:mahout-math:jar:0.5:compile - omitted for duplicate)
[INFO] | +- org.apache.hadoop:hadoop-core:jar:0.20.2:compile
[INFO] | | +- commons-cli:commons-cli:jar:1.2:compile
[INFO] | | +- commons-httpclient:commons-httpclient:jar:3.0.1:compile
[INFO] | | | +- (commons-logging:commons-logging:jar:1.0.3:compile - omitted for conflict with 1.1.1)
[INFO] | | | - (commons-codec:commons-codec:jar:1.2:compile - omitted for conflict with 1.3)
[INFO] | | - commons-codec:commons-codec:jar:1.3:compile
[INFO] | +- commons-dbcp:commons-dbcp:jar:1.2.2:compile
[INFO] | | - (commons-pool:commons-pool:jar:1.3:compile - omitted for conflict with 1.4)
[INFO] | +- commons-pool:commons-pool:jar:1.4:compile
[INFO] | +- org.slf4j:slf4j-api:jar:1.6.0:compile
[INFO] | +- commons-lang:commons-lang:jar:2.4:compile
[INFO] | +- org.uncommons.watchmaker:watchmaker-framework:jar:0.6.2:compile
[INFO] | | +- (org.uncommons.maths:uncommons-maths:jar:1.2:compile - omitted for duplicate)
[INFO] | | - com.google.collections:google-collections:jar:1.0-rc2:compile
[INFO] | +- com.thoughtworks.xstream:xstream:jar:1.3.1:compile
[INFO] | | - xpp3:xpp3_min:jar:1.1.4c:compile
[INFO] | +- org.apache.lucene:lucene-core:jar:3.1.0:compile
[INFO] | +- org.apache.lucene:lucene-analyzers:jar:3.1.0:compile
[INFO] | | - (org.apache.lucene:lucene-core:jar:3.1.0:compile - omitted for duplicate)
[INFO] | +- org.apache.mahout.commons:commons-cli:jar:2.0-mahout:compile
[INFO] | +- org.apache.commons:commons-math:jar:2.1:compile
[INFO] | - commons-collections:commons-collections:jar:3.2.1:compile
[INFO] +- org.apache.mahout:mahout-core:test-jar:tests:0.5:test
[INFO] | +- (org.apache.mahout:mahout-math:jar:0.5:test - omitted for duplicate)
[INFO] | +- (org.apache.hadoop:hadoop-core:jar:0.20.2:test - omitted for duplicate)
[INFO] | +- (commons-dbcp:commons-dbcp:jar:1.2.2:test - omitted for duplicate)
[INFO] | +- (commons-pool:commons-pool:jar:1.4:test - omitted for duplicate)
[INFO] | +- (org.slf4j:slf4j-api:jar:1.6.0:test - omitted for duplicate)
[INFO] | +- (commons-lang:commons-lang:jar:2.4:test - omitted for duplicate)
[INFO] | +- (org.uncommons.watchmaker:watchmaker-framework:jar:0.6.2:test - omitted for duplicate)
[INFO] | +- (com.thoughtworks.xstream:xstream:jar:1.3.1:test - omitted for duplicate)
[INFO] | +- (org.apache.lucene:lucene-core:jar:3.1.0:test - omitted for duplicate)
[INFO] | +- (org.apache.lucene:lucene-analyzers:jar:3.1.0:test - omitted for duplicate)
[INFO] | +- (org.apache.mahout.commons:commons-cli:jar:2.0-mahout:test - omitted for duplicate)
[INFO] | +- (org.apache.commons:commons-math:jar:2.1:test - omitted for duplicate)
[INFO] | - (commons-collections:commons-collections:jar:3.2.1:test - omitted for duplicate)
[INFO] +- org.apache.mahout:mahout-math:jar:0.5:compile
[INFO] | +- (org.apache.commons:commons-math:jar:2.1:compile - omitted for duplicate)
[INFO] | +- org.uncommons.maths:uncommons-maths:jar:1.2:compile
[INFO] | +- (com.google.guava:guava:jar:r03:compile - omitted for duplicate)
[INFO] | +- org.apache.mahout:mahout-collections:jar:1.0:compile
[INFO] | - (org.slf4j:slf4j-api:jar:1.6.0:compile - omitted for duplicate)
[INFO] +- org.apache.mahout:mahout-math:test-jar:tests:0.5:test
[INFO] | +- (org.apache.commons:commons-math:jar:2.1:test - omitted for duplicate)
[INFO] | +- (org.uncommons.maths:uncommons-maths:jar:1.2:test - omitted for duplicate)
[INFO] | +- (com.google.guava:guava:jar:r03:test - omitted for duplicate)
[INFO] | +- (org.apache.mahout:mahout-collections:jar:1.0:test - omitted for duplicate)
[INFO] | - (org.slf4j:slf4j-api:jar:1.6.0:test - omitted for duplicate)
[INFO] +- org.apache.mahout:mahout-utils:jar:0.5:compile
[INFO] | +- (org.apache.mahout:mahout-core:jar:0.5:compile - omitted for duplicate)
[INFO] | +- (org.apache.mahout:mahout-math:jar:0.5:compile - omitted for duplicate)
[INFO] | +- org.apache.solr:solr-commons-csv:jar:3.1.0:compile
[INFO] | +- (org.slf4j:slf4j-api:jar:1.6.0:compile - omitted for duplicate)
[INFO] | +- org.slf4j:slf4j-jcl:jar:1.6.0:compile
[INFO] | | +- (org.slf4j:slf4j-api:jar:1.6.0:compile - omitted for duplicate)
[INFO] | | - commons-logging:commons-logging:jar:1.1.1:compile
[INFO] | - (org.apache.lucene:lucene-core:jar:3.1.0:compile - omitted for duplicate)
[INFO] +- org.apache.mahout:mahout-examples:jar:0.5:compile
[INFO] | +- (org.apache.mahout:mahout-core:jar:0.5:compile - omitted for duplicate)
[INFO] | +- (org.apache.mahout:mahout-math:jar:0.5:compile - omitted for duplicate)
[INFO] | +- (org.apache.mahout:mahout-utils:jar:0.5:compile - omitted for duplicate)
[INFO] | +- org.apache.lucene:lucene-benchmark:jar:3.1.0:compile
[INFO] | | +- (org.apache.lucene:lucene-core:jar:3.1.0:compile - omitted for duplicate)
[INFO] | | +- (org.apache.lucene:lucene-analyzers:jar:3.1.0:compile - omitted for duplicate)
[INFO] | | +- org.apache.lucene:lucene-highlighter:jar:3.1.0:compile
[INFO] | | | +- (org.apache.lucene:lucene-core:jar:3.1.0:compile - omitted for duplicate)
[INFO] | | | +- (org.apache.lucene:lucene-memory:jar:3.1.0:compile - omitted for duplicate)
[INFO] | | | - org.apache.lucene:lucene-queries:jar:3.1.0:compile
[INFO] | | | +- (org.apache.lucene:lucene-core:jar:3.1.0:compile - omitted for duplicate)
[INFO] | | | - jakarta-regexp:jakarta-regexp:jar:1.4:compile
[INFO] | | +- org.apache.lucene:lucene-memory:jar:3.1.0:compile
[INFO] | | | - (org.apache.lucene:lucene-core:jar:3.1.0:compile - omitted for duplicate)
[INFO] | | +- commons-beanutils:commons-beanutils:jar:1.7.0:compile
[INFO] | | | - (commons-logging:commons-logging:jar:1.0.3:compile - omitted for conflict with 1.1.1)
[INFO] | | +- (commons-collections:commons-collections:jar:3.2.1:compile - omitted for duplicate)
[INFO] | | +- org.apache.commons:commons-compress:jar:1.1:compile
[INFO] | | +- commons-digester:commons-digester:jar:1.7:compile
[INFO] | | | +- (commons-beanutils:commons-beanutils:jar:1.6:compile - omitted for conflict with 1.7.0)
[INFO] | | | +- (commons-logging:commons-logging:jar:1.0:compile - omitted for conflict with 1.1.1)
[INFO] | | | +- (commons-collections:commons-collections:jar:2.1:compile - omitted for conflict with 3.2.1)
[INFO] | | | - xml-apis:xml-apis:jar:1.0.b2:compile
[INFO] | | +- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for duplicate)
[INFO] | | - org.apache.lucene:lucene-xercesImpl:jar:3.1.0:compile
[INFO] | +- (org.apache.lucene:lucene-analyzers:jar:3.1.0:compile - omitted for duplicate)
[INFO] | +- (org.uncommons.watchmaker:watchmaker-framework:jar:0.6.2:compile - omitted for duplicate)
[INFO] | +- org.uncommons.watchmaker:watchmaker-swing:jar:0.6.2:compile
[INFO] | | +- (org.uncommons.watchmaker:watchmaker-framework:jar:0.6.2:compile - omitted for duplicate)
[INFO] | | - (org.uncommons.maths:uncommons-maths:jar:1.2:compile - omitted for duplicate)
[INFO] | +- (org.slf4j:slf4j-api:jar:1.6.0:compile - omitted for duplicate)
[INFO] | +- (org.slf4j:slf4j-jcl:jar:1.6.0:compile - omitted for duplicate)
[INFO] | - net.java.dev.jets3t:jets3t:jar:0.7.1:compile
[INFO] | +- (commons-codec:commons-codec:jar:1.3:compile - omitted for duplicate)
[INFO] | +- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for duplicate)
[INFO] | - (commons-httpclient:commons-httpclient:jar:3.1:compile - omitted for conflict with 3.0.1)
[INFO] +- com.google.guava:guava:jar:r03:compile
[INFO] +- org.apache.thrift:libthrift:jar:0.6.1:compile
[INFO] | +- (org.slf4j:slf4j-api:jar:1.5.8:compile - omitted for conflict with 1.6.0)
[INFO] | +- (org.slf4j:slf4j-log4j12:jar:1.5.8:compile - omitted for conflict with 1.5.11)
[INFO] | +- (commons-lang:commons-lang:jar:2.5:compile - omitted for conflict with 2.4)
[INFO] | +- junit:junit:jar:4.4:compile
[INFO] | +- javax.servlet:servlet-api:jar:2.5:compile
[INFO] | - org.apache.httpcomponents:httpclient:jar:4.0.1:compile
[INFO] | +- org.apache.httpcomponents:httpcore:jar:4.0.1:compile
[INFO] | +- (commons-logging:commons-logging:jar:1.1.1:compile - omitted for duplicate)
[INFO] | - (commons-codec:commons-codec:jar:1.3:compile - omitted for duplicate)
[INFO] +- org.slf4j:slf4j-log4j12:jar:1.5.11:compile
[INFO] | +- (org.slf4j:slf4j-api:jar:1.5.11:compile - omitted for conflict with 1.6.0)
[INFO] | - log4j:log4j:jar:1.2.14:compile
[INFO] +- org.apache.hadoop:zookeeper:jar:3.3.1:compile
[INFO] | +- (log4j:log4j:jar:1.2.15:compile - omitted for conflict with 1.2.14)
[INFO] | - jline:jline:jar:0.9.94:compile
[INFO] | - (junit:junit:jar:3.8.1:compile - omitted for conflict with 4.4)
[INFO] +- org.twitter4j:twitter4j-stream:jar:2.2.3:compile
[INFO] | - org.twitter4j:twitter4j-core:jar:2.2.3:compile
[INFO] - commons-io:commons-io:jar:2.0.1:compile

Thanks!
Best regards,
Coco

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.