Apache SPARK:广播变量上的空指针异常(YARN 集群模式)

2023-11-22

我有一个简单的 Spark 应用程序,我试图在 YARN 集群上广播 String 类型变量。 但是每次我尝试访问广播变量 value 时,我都会在任务中得到 null 。如果你们能建议我在这里做错了什么,这将非常有帮助。 我的代码如下:-

public class TestApp implements Serializable { 
  static Broadcast<String[]> mongoConnectionString; 

  public static void main( String[] args ) { 
    String mongoBaseURL = args[0]; 
    SparkConf sparkConf =  new SparkConf().setAppName(Constants.appName); 
    JavaSparkContext javaSparkContext = new JavaSparkContext(sparkConf); 

    mongoConnectionString = javaSparkContext.broadcast(args); 

    JavaSQLContext javaSQLContext = new JavaSQLContext(javaSparkContext); 

    JavaSchemaRDD javaSchemaRDD = javaSQLContext.jsonFile(hdfsBaseURL+Constants.hdfsInputDirectoryPath); 

    if(javaSchemaRDD!=null) { 
      javaSchemaRDD.registerTempTable("LogAction"); 
      javaSchemaRDD.cache(); 
      pageSchemaRDD = javaSQLContext.sql(SqlConstants.getLogActionPage); 
      pageSchemaRDD.foreach(new Test());     
    } 
  } 

  private static class Test implements VoidFunction<Row> { 
    private static final long serialVersionUID = 1L; 

    public void call(Row t) throws Exception { 
      logger.info("mongoConnectionString "+mongoConnectionString.value()); 
    } 
  } 
}

这是因为您的广播变量处于类级别。因为当该类在工作节点中初始化时,它将看不到您在 main 方法中分配的值。由于广播变量未初始化为任何内容,因此它只会看到 null。我找到的解决方案是在调用方法时将广播变量传递给该方法。累加器也是如此

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

Apache SPARK:广播变量上的空指针异常(YARN 集群模式) 的相关文章

随机推荐

  • Windows 窗体 Web 浏览器控制缩放级别

    我正在使用 Web 浏览器控件在我的应用程序中显示一些动态生成的 HTML 文档 问题是 在我的机器上 文档显示有点放大 在其他同事的计算机上 一切看起来 正常 它必须是某种本地设置 但我找不到在哪里更改它 我可以按 CTRL 滚轮进行缩小
  • 什么叫“进口”?

    它不是一个陈述 也不是一个表达 那叫什么呢 指令 宣言 See also JLS 7 5 Import Declaration 7 5 1 单一类型导入声明 7 5 2 类型按需导入声明 7 5 3 单一静态导入声明 7 5 4 静态按需导
  • 为什么 Django 的 DetailView 没有可重用的模板?

    在 Django 中 在模板中显示表单相当简单
  • 如何在discord.js中通过ID查找用户

    我希望我的机器人能够为使用其 ID 声明的特定用户赋予特定角色 我试过 const user bot users cache get args 2 user roles add role ID 你在这里遇到的问题是你得到了一个User对象而
  • HTML Canvas:同时绘制多个 getContext

    我正在使用 websockets 构建一个工具 该工具允许多个用户在彼此的画布上 绘图 用户在画布上绘图 包含 mousedown mouseup 事件和坐标的对象会立即推送给其他用户 然后将其绘制在他们的画布上 这给出了多个用户在同一个地
  • hidesBottomBarWhenPushed 在 iOS 7 中被忽略

    这段代码在 iOS 7 发布之前一直运行良好 我正在分配一个UIViewController with hidesBottomBarWhenPushed as YES 作为rootViewController of an UINavigat
  • 部署 ASP.NET 网站并更新 MSSQL 数据库,零停机时间

    我对 ASP NET 网站和 MSSQL 数据库部署有疑问 我们正在托管 ASP NET 网站并开发了新版本 一些 ASP NET 文件已更改 数据库也进行了一些修改 在不停机的情况下上传新版本网站和升级 MSSQL 数据库的最佳理由是什么
  • 编程错误-sqlalchemy-on_conflict_do_update

    按照此question 正如 Ilja Everil 在他的书中提到的answer 我创建了一个表对象 from sqlalchemy import metadata MetaData idTagTable Table id tag met
  • 如何传递 Terraform S3 后端资源的变量?

    terraform backend s3 bucket mybucket key path to my key region us east 1 是否无法通过变量文件为上面的存储桶和键提供值 因为当我尝试这样做时 terraform bac
  • 使用Python for循环更改变量名称[重复]

    这个问题在这里已经有答案了 我只是想知道是否有人知道一种基于 for 循环更改变量名称的方法 如下所示 for i in range 3 group i self getGroup selected header i 以便更改变量名称以适应
  • PL/SQL 在 IN CLAUSE 中使用 VARRAY

    是否可以在 pl sql 的 IN CLAUSE 中使用 VARRAY 是的 可以 前提是 VARRAY 类型是全局类型 并且对于某些 PL SQL 代码来说不是本地类型 CREATE OR REPLACE TYPE str tab typ
  • 如何安装.tar.bz2文件

    我是 Linux 新手 正在使用 Ubuntu 正在尝试安装firefox 4 0b1 tar bz2但不知道如何从命令行安装它 我怎么能这样做呢 在 macOS 上 一些安装程序类似于 xxxxx bz2 要安装此类安装程序 您只需将扩展
  • 将 Html 渲染或转换为“格式化”文本 (.NET)

    我正在将一些数据从另一个测试 错误跟踪工具导入到 tfs 中 并且我想转换它的描述 它是简单的 HTML 所以是一个纯字符串 其中保留了 HTML 的 布局 例如 ol li Log on with user Acme amp Co li
  • 你能将 HTTPS 功能添加到 python Flask Web 服务器吗?

    我正在尝试构建一个 Web 界面来模拟网络设备上的静态接口 该网络设备使用摘要式身份验证和 HTTPS 我想出了如何将摘要式身份验证集成到 Web 服务器中 但我似乎无法找到如何使用 FLASK 获取 https 如果您可以向我展示如何实现
  • 如何中断 IMAP 的 IDLE?

    我正在使用 Javamail API 连接到我的 IMAP 服务器 javax mail Folder idle 的一切工作都很好method 当新邮件进来时 我的监听器会被呼叫 但是问题是永远空闲块 我该如何中断它 如何在不终止 Java
  • Hibernate 4.3.0.Final 和 Spring Data JPA 1.4.3.RELEASE

    我第一次尝试设置和使用 Spring Data 当然 您会想使用最新版本 Spring Data JPA 1 4 3 RELEASE Hibernate 4 3 0 Final 按照在线示例配置后 应用程序抛出异常
  • PHP 上传 - 为什么 isset($_POST['submit']) 总是 FALSE

    我有以下代码示例 upload3 php
  • .NET SSH 端口转发

    我正在尝试将 SSH 端口转发构建到我正在编写的 NET 应用程序中 我尝试过使用sharpSSH 但它要求用户每次都输入密码 而我不希望这样 我将处理存储密码的问题 我已经下载了Granados 但它的文档基本上为零 如何使用 Grana
  • bash 脚本 - 读取单个击键,包括特殊键 Enter 和空格

    不确定我是否应该将其放在 stackoverflow 或 unix stackexchange 上 但我发现了一些similar 问题在这里 就这样吧 我正在尝试创建一个由 bashrc 调用的脚本 该脚本允许我根据一次击键选择两个选项之一
  • Apache SPARK:广播变量上的空指针异常(YARN 集群模式)

    我有一个简单的 Spark 应用程序 我试图在 YARN 集群上广播 String 类型变量 但是每次我尝试访问广播变量 value 时 我都会在任务中得到 null 如果你们能建议我在这里做错了什么 这将非常有帮助 我的代码如下 publ