Neo4j
Important Capabilities
Capability | Status | Notes |
---|---|---|
Detect Deleted Entities | ✅ | Optionally enabled via stateful_ingestion.remove_stale_metadata |
CLI based Ingestion
Starter Recipe
Check out the following recipe to get started with ingestion! See below for full configuration options.
For general pointers on writing and running a recipe, see our main recipe guide.
source:
type: 'neo4j'
config:
uri: 'neo4j+ssc://host:7687'
username: 'neo4j'
password: 'password'
env: 'PROD'
sink:
type: "datahub-rest"
config:
server: 'http://localhost:8080'
Config Details
- Options
- Schema
Note that a .
is used to denote nested fields in the YAML recipe.
Field | Description |
---|---|
password ✅ string | Neo4j Password |
uri ✅ string | The URI for the Neo4j server |
username ✅ string | Neo4j Username |
env ✅ string | Neo4j env |
stateful_ingestion StatefulIngestionConfig | Stateful Ingestion Config |
stateful_ingestion.enabled boolean | Whether or not to enable stateful ingest. Default: True if a pipeline_name is set and either a datahub-rest sink or datahub_api is specified, otherwise False Default: False |
The JSONSchema for this configuration is inlined below.
{
"title": "Neo4jConfig",
"description": "Any source that produces dataset urns in a single environment should inherit this class",
"type": "object",
"properties": {
"stateful_ingestion": {
"title": "Stateful Ingestion",
"description": "Stateful Ingestion Config",
"allOf": [
{
"$ref": "#/definitions/StatefulIngestionConfig"
}
]
},
"env": {
"title": "Env",
"description": "Neo4j env",
"type": "string"
},
"username": {
"title": "Username",
"description": "Neo4j Username",
"type": "string"
},
"password": {
"title": "Password",
"description": "Neo4j Password",
"type": "string"
},
"uri": {
"title": "Uri",
"description": "The URI for the Neo4j server",
"type": "string"
}
},
"required": [
"env",
"username",
"password",
"uri"
],
"additionalProperties": false,
"definitions": {
"DynamicTypedStateProviderConfig": {
"title": "DynamicTypedStateProviderConfig",
"type": "object",
"properties": {
"type": {
"title": "Type",
"description": "The type of the state provider to use. For DataHub use `datahub`",
"type": "string"
},
"config": {
"title": "Config",
"description": "The configuration required for initializing the state provider. Default: The datahub_api config if set at pipeline level. Otherwise, the default DatahubClientConfig. See the defaults (https://github.com/datahub-project/datahub/blob/master/metadata-ingestion/src/datahub/ingestion/graph/client.py#L19).",
"default": {},
"type": "object"
}
},
"required": [
"type"
],
"additionalProperties": false
},
"StatefulIngestionConfig": {
"title": "StatefulIngestionConfig",
"description": "Basic Stateful Ingestion Specific Configuration for any source.",
"type": "object",
"properties": {
"enabled": {
"title": "Enabled",
"description": "Whether or not to enable stateful ingest. Default: True if a pipeline_name is set and either a datahub-rest sink or `datahub_api` is specified, otherwise False",
"default": false,
"type": "boolean"
}
},
"additionalProperties": false
}
}
}
Integration Details
Neo4j metadata will be ingested into DataHub using
CALL apoc.meta.schema() YIELD value UNWIND keys(value) AS key RETURN key, value[key] AS value;
The data that is returned will be parsed
and will be displayed as Nodes and Relationships in DataHub. Each object will be tagged with describing what kind of DataHub
object it is. The defaults are 'Node' and 'Relationship'. These tag values can be overwritten in the recipe.
Metadata Ingestion Quickstart
Prerequisites
In order to ingest metadata from Neo4j, you will need:
- Neo4j instance with APOC installed
Code Coordinates
- Class Name:
datahub.ingestion.source.neo4j.neo4j_source.Neo4jSource
- Browse on GitHub
Questions
If you've got any questions on configuring ingestion for Neo4j, feel free to ping us on our Slack.