加载并导入 Arrow
以下过程允许您读取通过 apoc.export.arrow.* 过程导出的 Apache Arrow 文件。它也有可能读取非通过导出过程创建的其他 Apache Arrow 文件。
过程与函数概览
下表描述了可用的过程和函数
| 限定名称 | 类型 |
|---|---|
apoc.load.arrow |
|
apoc.load.arrow.stream.adoc |
|
apoc.import.arrow |
|
apoc.load.arrow
此过程接收一个文件或 HTTP URL,并将 Apache Arrow 解析为映射(map)数据结构。
| 签名 |
|---|
|
目前,此过程不支持任何配置参数。
默认情况下,禁止从文件系统导入。我们可以通过在 apoc.conf 中设置以下属性来启用它
apoc.import.file.enabled=true
如果我们尝试在未先设置此属性的情况下使用任何导入过程,将会收到以下错误消息
Failed to invoke procedure: Caused by: java.lang.RuntimeException: Import from files not enabled, please set apoc.import.file.enabled=true in your apoc.conf |
导入文件从 import 目录读取,该目录由 server.directories.import 属性定义。这意味着我们提供的任何文件路径都是相对于此目录的。如果我们尝试从绝对路径(例如 /tmp/filename)读取,将会收到类似于以下的错误消息
Failed to invoke procedure: Caused by: java.lang.RuntimeException: Can’t read url or key file:/path/to/neo4j/import/tmp/filename as json: /path/to/neo4j//import/tmp/filename (No such file or directory) |
我们可以通过在 apoc.conf 中设置以下属性来启用从文件系统任意位置读取文件
apoc.import.file.use_neo4j_config=false
|
Neo4j 现在可以从文件系统的任何位置读取,因此在设置此属性之前,请确保这是您的意图。 |
示例
以下章节包含展示如何从各种 Apache Arrow 源导入数据的示例。
从本地文件导入
以此案例的输出为例
test.arrow 文件并将内容作为 Cypher 数据结构返回CALL apoc.load.arrow('test.arrow')
YIELD value
RETURN value
| 值 |
|---|
{arrayArray → ["[0]"], dateData → 2015-05-18T19:32:24Z, boolArray → [true,false,true], intArray → [1,2,3], mapData → "{"foo":"bar"}", boolData → true, intData → 1, mixedArray → ["1","2","true",<null>], doubleArray → [1.1,2.2,3.3], doubleData → 1.1, stringData → "a"} |
从二进制源导入
以此案例的输出为例
test.arrow 文件并将内容作为 Cypher 数据结构返回CALL apoc.load.arrow.stream('<binary arrow file>')
YIELD value
RETURN value
| 值 |
|---|
{arrayArray → ["[0]"], dateData → 2015-05-18T19:32:24Z, boolArray → [true,false,true], intArray → [1,2,3], mapData → "{"foo":"bar"}", boolData → true, intData → 1, mixedArray → ["1","2","true",<null>], doubleArray → [1.1,2.2,3.3], doubleData → 1.1, stringData → "a"} |
导入由导出 Arrow 过程创建的 Arrow 文件
apoc.import.arrow 过程可用于导入由 apoc.export.arrow.* 过程创建的 Apache Arrow 文件。
此过程不应与 apoc.load.arrow* 过程混淆,后者仅加载 Arrow 文件中的值,而不在数据库中创建实体。
更多信息请参阅此页面。