加载和导入 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 解析为映射数据结构。
签名 |
---|
|
目前,此过程不支持任何配置参数。
默认情况下,从文件系统导入是被禁用的。我们可以通过在 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"} |
导入 Export Arrow 程序创建的 Arrow 文件
apoc.import.arrow
过程可用于导入由 apoc.export.arrow.* 过程创建的 Apache Arrow 文件。
此过程不应与 apoc.load.arrow*
过程混淆,后者仅加载 Arrow 文件的值,而不创建数据库中的实体。