首页 > 解决方案 > 我正在尝试使用收集操作从数据框中读取以下字段,但它抛出了 java NullPointer 异常

问题描述

val db_query="(select
                 a.id,
                 conn_owner,
                 applicationname,
                 IsDuplicateConnection
              from ingestion.connections_metadata
              a inner join ingestion.connectionlnk_data b on
              a.id=b.connection_id inner join ingestion.application c on 
              b.application_id = c.id where a.id =23)db_query"

//为此创建df

val dbname= spark.read.format("jdbc")
            .option("driver",com.microsoft.sqlserver.jdbc.SQLServerDriver)
            .option("url",jdbc:sqlserver://sjmnb008hv.in.com:1433/ompm)
            .option("user",MysqlUser)
            .option("password", Password)
            .option("dbtable", db_query)
            .load()

//然后在这个df上应用collect

dbname.collect.foreach{ x=>
    var owner_name=x.get(1)

    if(x.get(3).toString()=='Y'){
        hive_db = hive_db.tolowerCase() + "_" 
                  + x.get(2).tostring().toLowerCase()
                     .replace(" ","").replace("-","_")
    }
}

所以这里 x.get(3) 将采用 null 值,默认值为 n 这里。

标签: scalahiveapache-spark-sql

解决方案


推荐阅读