OrientDB ETL 加载 CSV,其中顶点在一个文件中,边在另一个文件中

2023-12-06

我有一些数据位于 2 个 CSV 文件中,一个包含顶点,另一个文件包含另一个文件中的边。我正在研究如何使用 ETL 来设置它,已经接近但还没有完全实现——它基本上可以工作,但我的边缘有属性,我不确定它们是否正确加载。这个问题很有帮助,但我仍然缺少一些东西......

这是我的数据:

顶点.csv:

label,data,date
v01,0.1234,2015-01-01
v02,0.5678,2015-01-02
v03,0.9012,2015-01-03

边缘.csv:

u,v,weight,date
v01,v02,12.4,2015-06-17
v02,v03,17.9,2015-09-14

我使用以下方法导入顶点:

commonVertices.json:

{
"begin": [ 
             { "let": { "name":       "$filePath",  
                        "expression": "$fileDirectory.append($fileName)" 
                      } 
             },
         ],
"config": { "log": "info"},
"source": { "file": { "path": "$filePath" } },
"extractor": { "csv": { "ignoreEmptyLines": true,
                        "nullValue": "N/A",
                        "dateFormat": "yyyy-mm-dd"
                      }
             },
"transformers": [
                    { "vertex": { "class": "myVertex" } },
                    { "code":   { "language": "Javascript",
                                  "code":     "print('    Current record: ' + record); record;" }
                    }
                ],
"loader": { "orientdb": {
            "dbURL": "plocal:my_orientdb",
            "dbType": "graph",
            "batchCommit": 1000,
            "classes": [ { "name": "myVertex", "extends", "V" },
                       ],
            "indexes": []
            }
          }
}

顶点.json:

{ "config": { "log":           "info",
              "fileDirectory": "./",
              "fileName":      "vertices.csv"
            }
}

commonEdges.json:

{
    "begin": [
        { "let": { "name": "$filePath",
                   "expression": "$fileDirectory.append($fileName )"
                 }
        },
    ],

    "config": { "log": "info"
              },

    "source": { "file": { "path": "$filePath" } },

    "extractor": { "csv": { "ignoreEmptyLines": true,
                            "nullValue": "N/A",
                            "dateFormat": "yyyy-mm-dd"
                          }
                 },

    "transformers": [
            { "merge":  { "joinFieldName": "u", "lookup": "myVertex.label" } },
            { "edge":   { "class":         "myEdge",
                          "joinFieldName": "v",
                          "lookup":        "myVertex.label",
                          "direction":     "out",
                          "unresolvedLinkAction": "NOTHING"
                        }
            },
            { "field": { "fieldNames": ["u", "v"], "operation": "remove" } }
        ],

    "loader": {
        "orientdb": {
            "dbURL": "plocal:my_orientdb",
            "dbType": "graph",
            "batchCommit": 1000,
            "useLightweightEdges": false,
            "classes": [
                { "name": "myEdge",   "extends", "E" }
            ],
            "indexes": []
        }
    }
}

边缘.json:

{
    "config": {
        "log": "info",
        "fileDirectory": "./",
        "fileName": "edges.csv"
    }
}

我用 oetl.sh 运行它,如下所示:

$ oetl.sh vertices.json commonVertices.json
$ oetl.sh edges.json commonEdges.json

一切都在运行,但是当我查询边缘时...我是 OrientDB 的新手,所以也许它正在获取我的边缘中的属性,但是当我查询边缘时,我看不到权重和日期字段:

orientdb {db=my_orientdb}> SELECT FROM myEdge
+----+-----+------+-----+-----+
|#   |@RID |@CLASS|out  |in   |
+----+-----+------+-----+-----+
|0   |#33:0|myEdge|#25:0|#26:0|
|1   |#34:0|myEdge|#26:0|#27:0|
+----+-----+------+-----+-----+

顶点表包含来自 Edges.csv 的 [weight] 字段,并且 [date] 字段以一种奇怪的方式被破坏。该月的日期被覆盖为edge.csv 文件中的日期,这是不可取的,但对我来说奇怪的是月份本身并没有发生变化:

orientdb {db=my_orientdb}> SELECT FROM myVertex
+----+-----+--------+------+-------------------+-----+------+----------+---------+
|#   |@RID |@CLASS  |data  |date               |label|weight|out_myEdge|in_myEdge|
+----+-----+--------+------+-------------------+-----+------+----------+---------+
|0   |#25:0|myVertex|0.1234|2015-01-17 00:06:00|v01  |12.4  |[#33:0]   |         |
|1   |#26:0|myVertex|0.5678|2015-01-14 00:09:00|v02  |17.9  |[#34:0]   |[#33:0]  |
|2   |#27:0|myVertex|0.9012|2015-01-03 00:01:00|v03  |      |          |[#34:0]  |
+----+-----+--------+------+-------------------+-----+------+----------+---------+

我确信这可能是一个简单的调整,任何帮助都会很棒!


在边缘变压器中使用边缘字段绑定边的属性。例子:

 "transformers": [
            { "merge":  { "joinFieldName": "u", "lookup": "myVertex.label" } },
            { "edge":   { "class":         "myEdge",
                          "joinFieldName": "v",
                          "lookup":        "myVertex.label",
                          "edgeFields": { "weight": "${input.weight}", "date": "${input.date}" },
                          "direction":     "out",
                          "unresolvedLinkAction": "NOTHING"
                        }

            },
            { "field": { "fieldNames": ["u", "v"], "operation": "remove" } }
        ],

希望能帮助到你。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OrientDB ETL 加载 CSV,其中顶点在一个文件中,边在另一个文件中 的相关文章

  • OrientDB 在上下文错误中找不到数据库实例?

    Orient DB 在 orientdb community 1 7 rc2 中存在问题 当我尝试创建一个小函数时 如下所示 var db orient getDatabase return test 并执行它我收到以下错误 在位置 0 解
  • OrientDB 按边属性查询

    我有两个顶点类 Location 和 User 我还有两条边 Friend 和 GoingTo 用户可以与另一个用户成为 朋友 并且用户还可以 前往 某个位置 边 GoingTo 有一个名为going date 的日期时间属性 其中包含用户
  • OrientDB ETL 加载 CSV,其中顶点在一个文件中,边在另一个文件中

    我有一些数据位于 2 个 CSV 文件中 一个包含顶点 另一个文件包含另一个文件中的边 我正在研究如何使用 ETL 来设置它 已经接近但还没有完全实现 它基本上可以工作 但我的边缘有属性 我不确定它们是否正确加载 这个问题很有帮助 但我仍然
  • OrientDB:如何使用选择查询更新列

    我需要使用以下命令更新表中的列 update Table1 set name select productName from Table2 where rid parent current productid 查询工作正常 但不是名称查询以
  • 是否可以使用 C# 来处理 OrientDB?

    是否有任何实现 api或示例OrientDB http www orientechnologies com 和 C 我之所以关注 OrientDB 是因为它是我发现的唯一一个结合了图和文档的数据库 关于我应该如何尝试这个的任何建议 我的下一
  • OrientDB SELECT 和子查询

    我对此真的很困惑 为什么这有效 SELECT out Posted out IsFromCategory FROM 18 1 而这并不 SELECT out IsFromCategory FROM SELECT out Posted FRO
  • 如何使 Orientdb 的优势变得独特

    如何使 Edge 在 Orientdb 中独一无二 我想出的解决方案 删除边缘 再次创建它 但这并不好 Edge 没有任何属性 Example create edge is friend from 12 0 to 12 3 如果我再次调用它
  • Orient-db 正则表达式修饰符

    我正在使用 orient db 数据库 并且遇到正则表达式模式匹配问题 我确实需要在请求中存在不区分大小写的修饰符 但不知何故它无法按我的预期工作 Query select from UserAccounts where email MAT
  • 如何使用OrientDB ETL仅创建边

    我有两个 CSV 文件 首先包含 500M 记录 格式如下 id name10000023432 汤姆用户13943423235 胡说八道 第二个包含 1 5B 好友关系 格式如下 从 ID 到 ID10000023432 13943423
  • 我可以将我的 Java 类注册为 OrientDB 顶点和/或边吗?

    我尝试了东方数据库对象数据库API http www orientechnologies com docs 1 7 8 orientdb wiki Object Database html 它允许使用将 Java POJO 注册到数据库en
  • OrientDB:连接组件 OSQL 查询

    有谁知道如何使用 OrientDB 查询计算图的连通分量 我正在尝试复制所做的事情here https stackoverflow com questions 22497707 get connected graphs in neo4j b
  • OrientDB ETL 在加载 CSV 文件时抛出异常

    我试图将一个简单的 CSV 文件加载到 OrientDB 但它总是抛出此异常 CSV 文件内容 id name role 1 Sarath Architect 2 Anoop Project Manager 3 Nazeem Lead De
  • OrientDB GraphED - SQL 在两个(选择顶点 RID)之间插入边?或者用于非常大的进口的替代方法

    例如 OrientDB 图中的两个简单顶点 orientdb gt CREATE DATABASE local databases test admin admin local graph Creating database local d
  • 使用 OrientDB 递归遍历有向边

    我正在尝试从给定节点递归遍历出站边缘 而不是入站边缘 我想要查询结果中包含出边和出顶点 下图中 从 a 开始 我需要 a b c d e 包括边缘 但不包括 c 之后的部分 即 lt x a gt b gt c lt x gt d gt e
  • 如何将 ArangoDB 嵌入桌面应用程序

    我想在我的应用程序中嵌入一个图形数据库 适用于 Windows Linux 和 MAC 我将搜索范围缩小到 ArangoDB 和 OrientDB 我能够让嵌入式 OrientDB 工作 但我仍然想尝试 ArangoDB 来做出明智的决定
  • OrientDB性能

    我一直在阅读有关 OrientDB 性能基准的帖子 http technet weblineindia com web introduction to orientdb a nosql dbms http technet weblinein
  • OrientDB地理定位

    我正在使用 OrientDB for NoSQL 数据库 但我不知道如何准确查询地理位置 我已阅读具体文档 东方数据库函数 https github com orientechnologies orientdb wiki SQL Where
  • 服务器安全和通过 Rest 访问 OrientDB

    我猜这是一个令人尴尬的初学者问题 无论如何 在 OrientDB 文档的 服务器安全 下 我们发现 虽然 OrientDB Server 可以充当常规 Web 服务器 但不建议您将其直接公开到 Internet 或公共网络 相反 始终将 O
  • OrientDb sql注入和转义字符

    使用 OrientDb 进行编程时如何防止 sql 注入OrientDB NET binary https github com orientechnologies OrientDB NET binary 有没有办法转义 Orient SQ
  • 如何添加到 OrientDB 中的空间索引?

    我正在使用工作室的 OrientDB 2 0 我使用文档中的代码成功创建了 Lucene 空间索引 CREATE class Place extends V CREATE property Place name string CREATE

随机推荐

  • 如何枚举所有分区并聚合结果

    我有一个多分区的有状态服务 我怎样才能枚举它的所有分区和聚合结果 使用服务远程处理用于客户端和服务之间的通信 您可以使用枚举分区FabricClient var serviceName new Uri fabric MyApp MyServ
  • "yieldbreak;" 是什么意思?在 C# 中做什么?

    我在MSDN上看到过这样的语法 yield break 但我不知道它有什么作用 有人知道吗 它指定迭代器已结束 你可以想到yield break as a return不返回值的语句 例如 如果将函数定义为迭代器 则函数的主体可能如下所示
  • Nodejs 异步/等待 mysql 查询

    我有一个当前结构如下的nodejs项目 我需要在客户端表上插入一个注册表并从该表返回最后插入的ID 以便我可以在第二个表中使用它 但我需要等到插入完成客户表 然后将客户 ID 插入到我的第二个表中 我正在尝试使用 async await 但
  • useEffect 中无限循环

    我一直在使用 React 16 7 alpha 中的新钩子系统 当我处理的状态是对象或数组时 我会陷入 useEffect 中的无限循环 首先 我使用 useState 并使用一个空对象启动它 如下所示 const obj setObj u
  • ARIMA 产生的斜率直线

    我对使用 SARIMA 模型的时间序列很陌生 我按照教程构建模型并尝试预测未来趋势 一开始一切进展顺利 但当产生结果时 它显示斜率直线 我在 Jupyter NoteBook 上构建它 我首先检查了我的数据 并将数据可视化 但实际上 这似乎
  • 在实体框架中添加存储过程复杂类型

    我试图在实体框架中使用一个不返回任何内容的存储过程 我做了以下事情 添加了一个函数 右键单击存储过程 gt 添加 gt 函数导入 gt 复杂类型 gt 获取列信息 gt 创建新的复杂类型 我的函数名称 summarySP Result 构建
  • Android中如何删除progressBar中的文字?

    我的应用程序中有一个进度条 但它显示了一些默认文本 我想删除这些文本 请帮我如何删除文字 这是我的代码片段 ProgressDialog progDialog new ProgressDialog ProgressBarExample th
  • 使用perl查找连续两组括号的正则表达式是什么?

    我有带有不同括号的行 例如 sdfsfs sfdsfd sdfsfs sfdsfd sfdsfd sdfsfs sfdsfd sfdsfd sfdsfd sdfsfs sfdsfd sfdsfd sfdsfd sfdsfd sdfsfs s
  • 如何在 PHP 中将 number_format 的输出转换回数字?

    PHP无法识别1 200 00 由生成number format 但只有1200 00 这个问题的一般解决方案是什么 您可以删除任何不是数字或小数点的字符并使用floatval number 1200 00 parsed floatval
  • Grunt 任务:删除 HTML 文件中标记之间的行

    在开发中 我们测试未缩小的 css 文件 在构建时我们压缩并组合它们 我想然后删除未压缩的CSSlink前两个注释之间的元素 并取消注释link到生成的combined min css文件 有任何想法吗 Thanks 您没有提及您是如何进行
  • NSURLSession 的简历数据无效

    I use NSURLSessionConfiguration defaultSessionConfiguration 配置我的 url 会话 我通过调用暂停任务cancelByProducingResumeData 产生恢复数据 并将其保
  • 在 PHP 中将语言环境设置为 fr-FR 和数字格式

    我正在尝试创建我的网站之一的法语版本 我已经设定setlocale LC ALL fr FR 在我的页面顶部 并使用strftime我以法国风格正确显示日期 但是我在使用数字时遇到了一些问题 该页面的一部分使用我从 Web 服务获取的数据
  • 将 4 个原始字节转换为 32 位浮点数

    我正在尝试从 eeprom 重新构造 32 位浮点值 eeprom 存储器 0 4 中的 4 个字节是 B4 A2 91 4D PC VS Studio 将其正确重建为 3 054199 10 8 我知道应该在那里的浮点值 现在我正在移动这
  • 如何对 simplexml_load_file 进行错误检查?

    我正在使用 Tumbrl API 将一些帖子加载到我的主页上 我有以下电话 xml simplexml load file request url 有时它加载得很好 但有时我会得到以下输出 Warning simplexml load fi
  • hbase 和 hive 有什么区别? (Hadoop)

    根据我的理解 Hbase是Hadoop数据库 Hive是数据仓库 Hive 允许创建表并在其中存储数据 您还可以将现有的 HBase 表映射到 Hive 并对其进行操作 如果 hive 能做到这一切 为什么我们应该使用 hbase 我们可以
  • 尝试将第三个项目添加到过滤器时,“参数数据类型 ntext 对于上层函数的参数 1 无效”

    我一直在关注 ASP NET 网站上的 Contoso 大学教程 我正在尝试扩展我的技能 因此决定尝试向过滤器添加第三个选项 该教程提供 if String IsNullOrEmpty searchString students stude
  • 在 PHP 中用换行符替换文字字符串 \r\n 时出现问题

    我有一个包含文字字符串的文本文件 r n在里面 我想用实际的换行符 n 替换它 我知道正则表达式 r n 应该匹配它 我已经在Reggy 但我无法让它在 PHP 中工作 我尝试过以下变体 preg replace r n n line pr
  • 将参数传递给 boost::thread 没有重载函数需要 2 个参数

    从 boost thread 文档看来 我可以通过这样做将参数传递给线程函数 boost thread myThread new boost thread callbackFunc param 然而 当我这样做时 编译器抱怨说 没有重载函数
  • preg_match() 未知修饰符 '[' 帮助

    我有这个正则表达式来获取 YouTube 视频 ID lt v a zA Z0 9 lt 0 9 n lt v n 我从那里得到它 正则表达式解析 youtube yid 问题是我得到preg match Unknown modifier
  • OrientDB ETL 加载 CSV,其中顶点在一个文件中,边在另一个文件中

    我有一些数据位于 2 个 CSV 文件中 一个包含顶点 另一个文件包含另一个文件中的边 我正在研究如何使用 ETL 来设置它 已经接近但还没有完全实现 它基本上可以工作 但我的边缘有属性 我不确定它们是否正确加载 这个问题很有帮助 但我仍然