Apache arrow顶级项目调试

这篇具有很好参考价值的文章主要介绍了Apache arrow顶级项目调试。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Apache arrow顶级项目调试

arrow官方从7.x版本开始提供了一个gdb工具,叫做gdb_arrow.py,可以在仓库里面下载下来。

调试原理可以阅读之前写的文章:

玩转C++调试之Python的GDB库增强

使用办法非常简单,直接:

source /code/arrow/cpp/gdb_arrow.py

如果在gdb里面source没报错,那么恭喜你加载成功。

在随后的print arrow的内部结构时,便可以直接以可读的形式展示出来了。

当然,还可能非常不幸,会报错,各种语法错误,下面来简单说一下解决办法。

例如:

File "/code/arrow/cpp/gdb_arrow.py", line 60
  f'from GDB\'s response:\n"""{s}"""')
  ^
SyntaxError: invalid syntax

gdb_arrow.py脚本只支持python3以上版本,如果是python2自然就出错了,例如:上面的语法错误。

在gdb里面可以检查一下自己的python脚本:

(gdb) py
>import sys
>print(sys.version)
>end
3.8.15 (default, Mar  9 2023, 21:22:48) 
[GCC 10.2.1 20210130 (Red Hat 10.2.1-11)]

可以看到输出了python3,那么到这里可以验证python版本没问题,一般来说就是可以source成功的,我这边一开始这样查看出来的版本是python2,自然就source挂了,最后通过源码安装gdb方式,安装了一个比较新的版本就没问题了。

下面来看看使用脚本与不使用脚本调试的显示情况吧。

  • 默认调试

(gdb) p *schema
$2 = (std::__shared_ptr_access<arrow::Schema, (__gnu_cxx::_Lock_policy)2, false, false>::element_type &) @0x5a2dd0: {<arrow::detail::Fingerprintable> = {
    _vptr.Fingerprintable = 0x7ffff786fe70 <vtable for arrow::Schema+16>, fingerprint_ = {_M_b = {_M_p = 0x0}}, metadata_fingerprint_ = {_M_b = {
        _M_p = 0x0}}}, <arrow::util::EqualityComparable<arrow::Schema>> = {<No data fields>}, <arrow::util::ToStringOstreamable<arrow::Schema>> = {<No data fields>}, impl_ = {
    _M_t = {<std::__uniq_ptr_impl<arrow::Schema::Impl, std::default_delete<arrow::Schema::Impl> >> = {
        _M_t = {<std::_Tuple_impl<0, arrow::Schema::Impl*, std::default_delete<arrow::Schema::Impl> >> = {<std::_Tuple_impl<1, std::default_delete<arrow::Schema::Impl> >> = {<std::_Head_base<1, std::default_delete<arrow::Schema::Impl>, true>> = {<std::default_delete<arrow::Schema::Impl>> = {<No data fields>}, <No data fields>}, <No data fields>}, <std::_Head_base<0, arrow::Schema::Impl*, false>> = {_M_head_impl = 0x5a2790}, <No data fields>}, <No data fields>}}, <No data fields>}}}
  • 脚本调试

(gdb) p *schema
$3 = (std::__shared_ptr_access<arrow::Schema, (__gnu_cxx::_Lock_policy)2, false, false>::element_type &) @0x5a2dd0: arrow::Schema with 3 fields = {["fd0"] = arrow::int32(), 
  ["fd1"] = arrow::uint8(), ["fd2"] = arrow::int16()}

再试试batch

(gdb) p *b1
$4 = (std::__shared_ptr_access<arrow::RecordBatch, (__gnu_cxx::_Lock_policy)2, false, false>::element_type &) @0x5a2a90: arrow::RecordBatch with 3 columns, 10 rows = {
  ["fd0"] = arrow::ArrayData of type arrow::int32(), length 10, offset 0, null count 0 = {440260352, 1427803791, 1601077171, -300415297, 1521318915, -1491074194, -1019370501, 
    -876914235, 791665453, -229504221}, ["fd1"] = arrow::ArrayData of type arrow::uint8(), length 10, offset 0, null count 0 = {0, 215, 61, 26, 143, 142, 26, 85, 179, 127}, 
  ["fd2"] = arrow::ArrayData of type arrow::int16(), length 10, offset 0, null count 0 = {-10496, 6717, -29041, 21786, 32691, 24430, 1727, -4584, 31747, 23213}}

可以看到的是非常的直观!

以后调试arrow又更加方便了。文章来源地址https://www.toymoban.com/news/detail-704115.html

到了这里,关于Apache arrow顶级项目调试的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • SeaTunnel 发布成为 Apache 顶级项目后首个版本 2.3.2,进一步提高 Zeta 引擎稳定性和易用性

    近日,Apache SeaTunnel 正式发布 2.3.2 版本。此时距离上一版本 2.3.1 发布已有两个多月,期间我们收集并根据用户和开发者的反馈,在 2.3.2 版本中对 SeaTunnel Zeta Engine 进行了 Bug 修复,提高了引擎的稳定性和使用效率。 此外,新版本还对 Connector-V2 中的连接器进行了功能和性能优

    2024年02月10日
    浏览(69)
  • HashJoin 在 Apache Arrow 和PostgreSQL 中的实现

    近两个月转到了计算引擎领域, 为公司开发兼容PG的新的向量化计算引擎, 所以一直处于高强度的学习以及开发过程,也没有来得及做一些总结. 之前的背景都是存储, 包括NoSQL存储(Rocksdb/FoundationDB)以及做了一年半的数据库内核存储(PostgreSQL), 这个过程对于存储相关的知识也有了较

    2024年02月08日
    浏览(39)
  • 数据库信息速递: Apache Arrow 如何加速 InfluxDB (翻译)

    开头还是介绍一下群,如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题,有需求都可以加群群内,可以解决你的问题。加群请联系 liuaustin3 ,(共1760人左右 1 + 2 + 3 + 4 +5) 4群(260+),另欢迎 OpenGauss 的技术人员加入。 最近是百业萧条,本地前十的新能源

    2024年02月03日
    浏览(54)
  • Go语言开发者的Apache Arrow使用指南:内存管理

    如果你看了上一篇《Go语言开发者的Apache Arrow使用指南:数据类型》 [1] 中的诸多Go操作arrow的代码示例,你很可能会被代码中大量使用的Retain和Release方法搞晕。不光大家有这样的感觉,我也有同样的feeling:**Go是GC语言 [2] ,为什么还要借助另外一套Retain和Release来进行内存管理

    2024年02月11日
    浏览(54)
  • Apache Arrow: The Definitive Guide to CrossLanguage Data Interoperability

    Apache Arrow 是一个跨语言的数据交换格式和计算引擎,旨在提高数据科学家和工程师在处理大数据集时的性能和效率。它为多种编程语言(如 Python、Java、C++、R、Julia 等)提供了一种共享内存的数据结构,以便在不同语言之间轻松共享和操作数据。 Apache Arrow 的核心设计思想是通

    2024年04月13日
    浏览(75)
  • Apache Doris 支持 Arrow Flight SQL 协议,数据传输效率实现百倍飞跃

    近年来,随着数据科学、数据湖分析等场景的兴起,对数据读取和传输速度提出更高的要求。而 JDBC/ODBC 作为与数据库交互的主流标准,在应对大规模数据读取和传输时显得力不从心,无法满足高性能、低延迟等数据处理需求。为提供更高效的数据传输方案,Apache Doris 在 2.

    2024年04月15日
    浏览(43)
  • Apache Doris 开源最顶级基于MPP架构的高性能实时分析数据库

    Apache Doris是一个基于MPP架构的易于使用,高性能和实时的分析数据库,以其极高的速度和易用性而闻名。海量数据下返回查询结果仅需亚秒级响应时间,不仅可以支持高并发点查询场景,还可以支持高通量复杂分析场景。 这些都使得 Apache Doris 成为报表分析、即席查询、统一

    2024年02月03日
    浏览(57)
  • 01 - Apache Seatunnel 源码调试

    选择 seatunnel-examples ├── seatunnel-engine-examples ├── seatunnel-flink-connector-v2-example ├── seatunnel-spark-connector-v2-example 注意:需要调试哪些数据库,使用相应 connector ,就要在 pom 文件中添加。 如果需要其他的,自己补充即可

    2024年02月09日
    浏览(44)
  • Apache Seatunnel本地源码构建编译运行调试

    Apache Seatunnel本地源码构建编译运行调试   本文使用的是windows10-64位专业版的电脑,需要安装环境如下   jdk=1.8 - 64 位的jdk、   使用的是idea自带的maven,最好是安装一个方便源码编译构建,使用idea自带的maven无法执行mvnw,但是可以复制mvnw后面的在idea的maven中的run mave

    2024年01月16日
    浏览(32)
  • 【项目部署-apache】windows系统下apache部署django+channels

    1、原生的python3.8.5(默认安装,不更改安装目录),不要使用Anaconda做虚拟环境。 2、在windows系统下需要,mod_wsgi 模块。 创建虚拟环境:(在当前目录下创建名为 gzgs_alert 的虚拟环境) 激活gzgs_alert 虚拟环境,安装mod_wsgi: whl文件下载: 复制文件到虚拟环境的Scripts目录下: cmd进

    2024年04月26日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包