bbonnin / zeppelin-mongodb-interpreter

MongoDB interpreter for Apache Zeppelin
Apache License 2.0
48 stars 22 forks source link
hacktoberfest

zeppelin-mongodb-interpreter

MongoDB interpreter for Apache Zeppelin.

Supported versions of MongoDB: >= 3.0

If you are interested, there is a Docker image for Zeppelin with MongoDB interpreter: https://hub.docker.com/r/cthiebault/zeppelin-mongodb/

Build

Requirement: Zeppelin must be in your local repo.

mvn clean package

Download

If you cannot build the jar, you can download it in the release page

Deployment

In some cases, mongodb is not visible in the list of the available interpreters. In this case, after the previous steps, you can create a new interpreter and in the interpreter group selection, you should be able to select mongodb.

Create

Configuration

ParameterDefault valueDescription
mongo.shell.pathmongoMongo shell path
mongo.shell.command.timeout60000Mongo command timeout
mongo.shell.command.table.limit1000Limit of documents displayed in a table
mongo.server.databasetestMongDB database name
mongo.server.hostlocalhostHost of the MongDB server
mongo.server.port27017Port of the MongDB server
mongo.server.usernameUsername for authentication
mongo.server.passwordPassword for authentication
mongo.server.authentdatabaseDatabase used for authentication

How to use

In Zeppelin, use %mongodb in a paragraph. After that, you can type the same Javascript code you use when you write scripts for the Mongo shell. For more information, please consult: https://docs.mongodb.com/manual/tutorial/write-scripts-for-the-mongo-shell/

There are several functions that have been added to help you in Zeppelin:

Examples:

%mongodb

// Display a table
db.zipcodes.find({ "city":"CHICAGO", "state": "IL" }).table()
%mongodb

var states = db.zipcodes.aggregate( [
   { $group: { _id: "$state", totalPop: { $sum: "$pop" } } },
   { $match: { totalPop: { $lt: 1000*1000 } } },
   { $sort: { totalPop: 1 } }
] )

// Build a 'table'
print("%table state\ttotalPop")
states.forEach(state => { print(state._id + "\t" + state.totalPop) })

Examples