gpt4 book ai didi

hadoop - 无法在 Spark API 中打印/记录消息

转载 作者:可可西里 更新时间:2023-11-01 16:39:00 25 4
gpt4 key购买 nike

我正在调试 Spark 作业,但不知何故,控制台/日志中隐藏了 Spark API 调用中的任何内容,这是我的代码:

public static JavaRDD<SolrInputDocument> join(
JavaPairRDD<ImmutableBytesWritable, Result> hBaseRdd,
List<NuggetsField> fields) {
System.out.println("In join method....");
logger.error("In join method.... logger.error");

JavaRDD<ProductJoin> pjs = hBaseRdd.map(tuple -> {
System.out.println("in map API .....");
logger.error("in map API.... logger.error");
/**do some transformation*/
});

System.out.println("got ProductJoin RDD.....");
System.out.println("pjs.count() = " + pjs.count());
return pjs;
}

在连接方法中....在连接方法中.... logger.error得到了ProductJoin RDD.....pjs.count() = 总能打印出来。

但是,in map API .....in map API.... logger.error 从未显示。

这是为什么?此外,pjs.count() 值不为 0。

有人可以帮帮我吗?

谢谢!

最佳答案

这里的关键是 JVM 运行打印行的内容,因为这是它将出现的日志。在您的情况下,因为您在除驱动程序之外的 yarn 上运行,您可以看到驱动程序的打印输出,但看不到在执行程序上运行的任何代码(如 map )。该输出进入相应的 yarn 容器 stderr 文件。

如果您想在调试时看到任何打印语句,最简单的方法就是在本地模式下运行。

关于pjs.count(),map操作是一对一的转换,不能移除元素。您稍后需要应用过滤器来删除空值。

关于hadoop - 无法在 Spark API 中打印/记录消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45603835/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com