ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

Vespa Java 命令行工具集详解:vespa-feeder / vespa-get / vespa-visit / vespa-destination / vespa-stat

Vespa Java 命令行工具集详解:vespa-feeder / vespa-get / vespa-visit / vespa-destination / vespa-stat 后端搜索引擎人工智能大数据【免费下载链接】vespaThe AI search platform项目地址https://gitcode.com/gh_mirrors/ve/vespa点击查看免费下载本文以 vespaclient-java/README.md 为主线深入剖析 VespaAI search platform提供的 Java 命令行实用工具vespa-feeder批量喂数据、vespa-get按 ID 取文档、vespa-visit遍历文档、vespa-destination / vespa-visit-target遍历数据接收端与 vespa-stat分桶统计。读完本文你将掌握每个工具的参数语义、典型调用方式以及它们背后的 MessageBus / Document API 实现原理能够直接用于生产环境的数据导入、导出、校验与排障。工具集概览与模块定位vespaclient-java是 Vespa 仓库中的一个 Maven 模块见 vespaclient-java/pom.xmlREADME 明确指出该包提供若干用 Java 编写的命令行实用工具包括vespa-feeder—— 向 Vespa 应用批量喂入 XML已废弃或 JSON 格式的文档数据vespa-get—— 按 document id 从一个 Content cluster 获取单个文档vespa-visit—— 遍历visit集群中的一批文档输出到 STDOUT 或转发到指定 routevespa-destination—— 遍历数据的接收端进程把收到的文档打印到标准输出vespa-stat—— 针对特定 user / group / bucket / gid / document 获取存储统计信息。所有工具都由src/main/sh/下的 shell 包装脚本启动最终统一执行打包产物vespaclient-java-jar-with-dependencies.jar中的对应主类。除上述五个工具外模块还附带vespa-significance、vespa-summary-benchmark、vespa-feed-perf、vespa-status-filedistribution、vespa-crypto-cli等辅助工具源码分布在 vespaclient-java/src/main/java/com/yahoo/ 与 vespaclient-java/src/main/java/ai/vespa/ 下本文聚焦 README 点名的五个核心工具。vespa-feeder向 Vespa 批量喂入数据vespa-feeder是最常用的数据导入工具支持从文件或标准输入读取 XML已废弃或 JSON 格式的文档数据。主类为com.yahoo.vespafeeder.VespaFeeder见 VespaFeeder.java参数解析在 Arguments.java 中完成。完整参数说明结合Arguments.help()输出与parse()实现vespa-feeder支持以下参数参数默认值说明--file name无指定输入文件也可不带前缀直接作为位置参数传入不指定则从标准输入解析--mode modestandard运行模式standard或benchmark后者使用 BenchmarkProgressPrinter 输出基准测试进度见 BenchmarkProgressPrinter.java--route routedefault数据发送的目标 route--timeout sec180单次操作允许的发送超时秒--maxpending n动态允许同时挂起的最大操作数注意设置后会禁用动态节流dynamic throttling需谨慎使用--maxfeedrate rate无将喂入速率限制为给定值操作数/秒若达不到目标速率可适当调大--maxpending--trace level0网络流量的 trace 级别--abortondataerror booltrue输入数据出现错误时是否中止true/false也接受 yes/no--abortonsenderror booltrue发送操作出错时是否中止--noretry关闭关闭可恢复失败的重试--priority p无指定发送消息的优先级取值见 DocumentProtocol 文档--numthreads n1用于发送的线程数--create-if-non-existent关闭对 XML feed 中的所有 document update 启用create-if-non-existent--validate关闭只对输入文件运行校验不实际喂入--dumpDocuments file无把 put 中的文档序列化写入指定文件-v/--verbose关闭输出详细的进度信息-h/--help—显示帮助页工作原理从参数到 MessageBus 会话从 VespaFeeder.java 的main()可以看到完整的调用链解析命令行参数得到ArgumentsDocumentTypeManagerConfigurer.configure(manager, client)通过 config idclient加载文档类型定义parseFiles()构建FeedContext创建VespaFeedHandler逐个文件或标准输入调用handler.handle()并传入进度回调。输入格式的自动探测值得注意setJsonInput()会mark输入流并读取第一个字节——以[开头的流被判定为 JSON feed一个合法 JSON feed 必定以[开头否则按 XML 处理判定结果通过VespaFeedHandler.JSON_INPUT属性传给 handler。这与 vespaclient-java/src/test/files/ 下同时存在myfeed.json、myfeed.xml、malformedfeed.json等测试样本的设计相呼应。Arguments构造时会根据模式选择会话工厂--validate模式使用DummySessionFactory配合--dumpDocuments时输出到指定文件只做校验不真正发送否则使用MessageBusSessionFactory底层走 Vespa MessageBus 的 feed 协议。VespaFeeder出错时调用renderErrors()最多展示前 10 条错误并以FeedErrorException退出码 1 结束-v模式会先打印每个输入文件的字节大小。vespa-get按文档 ID 获取文档vespa-get从 Content cluster 获取一个或多个文档主类是com.yahoo.vespaget.Main参数解析见 CommandLineOptions.java。完整参数说明vespa-get options [documentid...]短选项长选项说明-i--printids只显示检索到的文档标识符等价于 fieldset 设为docid-f--fieldset fieldset只检索指定字段默认document完整文档-u--cluster cluster向指定 content cluster 发送请求与--route互斥-r--route route向指定 MessageBus route 发送请求与--cluster同时给出会报错-c--configid id用于 MessageBus 配置的 config id默认client-s--showdocsize显示文档的二进制大小-t--timeout sec请求超时秒默认 0不超时-n--noretry对瞬时错误不重试默认会重试-a--trace leveltrace 级别默认 0合法范围 09-p--priority p优先级默认NORMAL_26支持优先级枚举名或数值-j--jsonoutputJSON 输出默认格式-x--xmloutputXML 输出—--shorttensors以短形式输出 JSON tensorVespa 9 起将成为默认—--directtensorstensor 以直接值形式输出—--replica-override nodeId指定从哪个副本节点取文档调试用nodeId 合法范围 065534-h--help显示帮助输入与输出细节文档 ID 有两种来源命令行位置参数或标准输入每行一个 ID见getDocumentIds()中的Scanner(stdIn, UTF_8)。约束校验包括--jsonoutput与--xmloutput互斥--printids不能与--fieldset组合未指定--cluster与--route时默认走default-getroute。优先级解析parsePriority()先尝试枚举名如NORMAL_2再尝试数值映射到DocumentProtocol.Priority。vespa-visit遍历集群中的文档vespa-visit在存储节点本地以未定义顺序处理一批存储文档visit 操作默认使用DumpVisitor库把文档分块发回数据处理器默认就是启动vespa-visit的进程本身并写入 STDOUT。主类是com.yahoo.vespavisit.VdsVisit。完整参数见 man page vespa-visit.1。核心参数短选项长选项说明-s--selection selection文档选择表达式指定要 visit 哪些文档建议加引号避免 shell 破坏表达式-f--from time只 visit 给定时间戳1970 年以来的微秒数及更新文档-t--to time只 visit 不超过给定时间戳的文档-i--printids只把文档 ID 打印到 STDOUTvisit removes 时附加额外标记隐含 headers-only 遍历且不能与 datahandler 同时使用-d--datahandler target访问目标默认是启动的vespa-visit进程本身打印到 STDOUT可替换为其他 visit target-p--progress file定期把遍历进度写入进度文件若启动时该文件已存在则从断点继续-o--timeout ms在给定毫秒数后超时终止 visitor-r--visitremoves同时返回已删除条目的标识默认只处理现存文档注意 Vespa 只保留删除条目一段可配置的时间-m--maxpending n发往数据处理器的最多挂起 docblock 消息数默认 16可通过maxpending × stor-visitor 配置中的 defaultdocblocksize ÷ 数据处理器数估算内存占用-c--cluster cluster指定要遍历的 VDS cluster-v--verbose更详细输出缩进 XML向 STDERR 输出进度与信息-h--help显示语法帮助高级选项用于进阶场景或测试--visitlibrary library替换默认的DumpVisitor库库文件名规则为lib前缀加名称加.so--libraryparam key value向自定义 visitor 库传入参数--polling改用轮询式 visitor API默认是更高效的回调式 API部分系统测试用它验证轮询 API--visitinconsistentbuckets集群暂时不一致时不再等待不一致消除而是遍历副本最多的 bucket此时返回数据不保证正确仅用于时间敏感场景。visit target 的三种类型vespa-visit的结果可发往多种目标MessageBus route直接指定 route 名典型用于 Vespa 内部的再处理reprocessing简单部署下会自动生成诸如default的 routeLocation brokerslobrok地址用/分隔的路径*通配任意一级元素。例如 docproc 集群mydpcluster的节点注册名为docproc/cluster.mydpcluster/docproc/0/feed_processor可用docproc/cluster.mydpcluster/docproc/*/feed_processor把数据分散发给所有匹配节点每条消息只发往一个节点TCP socket形如tcp/hostname:port/servicename如tcp/myhost.com:12345/visit-destination要求端点支持 FNET RPC通常由vespa-visit-target提供。断点续传的进度文件机制vespa-visit的进度落盘由 VdsVisitHandler.java 中的ControlHandler实现进度更新时先写进度文件名.tmp再用Files.move(..., ATOMIC_MOVE)原子替换默认每 10 秒writeInterval写一次若写失败会调用abort()宁可中止遍历也不允许进度丢失。配合--progress参数即可实现大表分批导出、中断后从断点继续。vespa-destination 与 vespa-visit-target遍历数据接收端当你不希望把遍历数据发回发起 visit 的进程时可用独立的目标进程分摊负载。README 提到的vespa-destination对应主类com.yahoo.dummyreceiver.DummyReceiver见 DummyReceiver.java启动脚本 vespa-destination.sh 会为其分配4 GB 堆-Xms4g -Xmx4g并开启 GC 日志将收到的文档打印到 STDOUT。配套的vespa-visit-target脚本 vespa-visit-target.shman page vespa-visit-target.1是在任意节点上建立 visit 数据端点的工具把收到的数据以 XML 格式写回 STDOUT支持两种绑定方式-s/--bindtoslobrok address绑定到给定 location broker 地址工具会自动追加/visit-destination后缀例如在节点上绑定mynode/0/visit-destination再在vespa-visit中指定mynode/*/visit-destination即可把数据分发到该节点-t/--bindtosocket port绑定到指定 TCP 端口不注册 slobrokvisit 时需显式给出tcp/host:port/visit-destination形式的地址-i/--printids只打印文档 ID-v/--verbose缩进 XML 输出-h/--help帮助。vespa-stat按 user / group / bucket / gid / document 查询统计vespa-stat获取存储统计信息主类是com.yahoo.vespastat.Main参数解析见 CommandLineOptions.java。vespa-stat [options]短选项长选项说明-d--dump转储所有匹配所选条件的 bucket 的文档列表-r--route route消息发送 route通常是 storage cluster 名称默认default-s--bucketspace space指定 bucket space 内的统计未指定时用defaultFixedBucketSpaces.defaultSpace()-u--user userid转储可能包含该 user 的 bucket 列表-g--group groupid转储可能包含该 group 的 bucket 列表-b--bucket bucketid转储给定 bucket 内或包含它的 bucket 列表-l--gid globalid转储一个具体文档按全局 ID隐含--dump-o--document docid转储一个具体文档按 docid隐含--dump-h--help显示帮助user / group / bucket / gid / document五个选项属于互斥的OptionGroup通过SelectionType枚举区分选择类型--gid与--document会自动开启 dump。若五个选择项一个都没给且非--help解析器会直接抛出Must specify one of user, group, bucket, document or gid.。统计抓取与打印分别由 BucketStatsRetriever.java 和 BucketStatsPrinter.java 完成。统一的启动脚本与 JVM 调优所有工具的入口脚本都遵循同一套环境引导逻辑vespa-feeder.sh、vespa-get.sh、vespa-visit.sh、vespa-stat.sh 等依次从VESPA_HOME环境变量、ROOT、脚本自身路径向上回溯定位libexec/vespa/common-env.sh并 source失败则报FATAL: missing VESPA_HOME environment variable解析主机名vespa-detect-hostname→hostname -f→hostname→localhost并通过vespa-validate-hostname校验最终以java -server -enableassertions -XX:ThreadStackSize512 -Xms128m启动classpath 为${VESPA_HOME}/lib/jars/vespaclient-java-jar-with-dependencies.jar对应主类见下表工具主类vespa-feedercom.yahoo.vespafeeder.VespaFeedervespa-getcom.yahoo.vespaget.Mainvespa-visitcom.yahoo.vespavisit.VdsVisitvespa-destinationcom.yahoo.dummyreceiver.DummyReceivervespa-statcom.yahoo.vespastat.Main几个脚本特有的调优点vespa-feeder.sh显式设置-XX:MaxDirectMemorySize64m并把日志目标设为file:/dev/nullVESPA_LOG_TARGET避免 feed 输出被日志干扰vespa-get.sh设置VESPA_LOG_LEVELall -debug -spam -config -info -event只保留必要的日志级别vespa-visit.sh允许用户在参数中覆盖堆大小脚本会扫描参数中的-Xmx*并用其替换默认的-Xmx1024m未显式设置VESPA_LOG_LEVEL时默认error,warningvespa-destination.sh使用-Xms4g -Xmx4g大堆并开启-Xlog:gc并会把外部$CLASSPATH并入 classpath以支持自定义文档处理逻辑。测试与验证模块在 vespaclient-java/src/test/java/ 下提供了完善的单元测试可作为理解工具行为的第一手资料CommandLineOptionsTest.java 与 CommandLineOptionsTest.javavespastat 覆盖两个工具的选项解析、互斥校验与默认值VespaFeederTestCase.java、ProgressPrinterTest.java 验证 feed 流程与进度输出DocumentRetrieverTest.java、BucketStatsRetrieverTest.java、VdsVisitTestCase.java 覆盖取数、统计与 visit 的核心逻辑vespaclient-java/src/test/files/ 中的myfeed.json、myfeed.xml、malformedfeed.json、no_1.jsonl、no_2.jsonl等样本文件可用于本地演练vespa-feeder --validate的输入校验行为。总结vespaclient-java用五个互补的命令行工具覆盖了 Vespa 文档数据的完整生命周期vespa-feeder负责写入vespa-get负责按 ID 精确读取vespa-visit配合vespa-destination/vespa-visit-target负责批量遍历与数据分发vespa-stat负责存储层面的分桶诊断。所有工具共享统一的脚本引导、JVM 参数与-jar-with-dependencies打包方式并基于 MessageBus / Document API 与存储集群通信。无论是日常数据导入、故障排查还是集群间数据迁移这套工具都是与 Vespa 内容集群交互的最直接入口。赞分享后端搜索引擎人工智能大数据【免费下载链接】vespaThe AI search platform项目地址https://gitcode.com/gh_mirrors/ve/vespa点击查看免费下载相关推荐Vespa Logstash 插件实战用 logstash-input-vespa 与 logstash-output-vespa 打通读取与写入数据管道Vespa Logstash 插件实战用 logstash input vespa 与 logstash output vespa 打通读取与写入数据管道 导后端搜索引擎人工智能大数据Vespa 客户端实战指南CLI、Python、JavaScript 与 Java YQL DSL 全解析Vespa 客户端实战指南CLI、Python、JavaScript 与 Java YQL DSL 全解析 本文围绕 Vespa 仓库中 client/REA后端搜索引擎人工智能大数据上一篇网盘直链下载脚本完整指南九大网盘一键取链3 步接入 Aria2下一篇Mosquitto 0.8“库版本”深度解析libmosquitto 客户端库架构与桥接行为变更创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表