Spark中的DataFrame的getAs方法如果取到的值是null的处理

Spark中的DataFrame的getAs方法如果取到的值是null的处理结果

我遇到的两种情况吧

val DF = hc.sql("...............")

val rdd = DF.rdd.map{

row =>

val label = row.getAs[Int]("age")

}

1,如果getAs[Integer]("age")那么null值被拿出来依然为null

2,如果getAs[Int]("age")则 label = 0(本以为要报错的才对)


  def getAs[T](fieldName: String): T = getAs[T](fieldIndex(fieldName))


建议:如果null不是你想的数据建议在SQL阶段就将其过滤掉
补充一点Java的成员变量和局部变量的知识

成员变量与局部变量的联系与区别:
a)无论是成员变量还是局部变量,使用前都需要声明( 定义)。
b) 对于局部变量来说,使用前必须要初始化;对于成员变量来说,使用前可以不初始化。如果没有初始化成员变量就开始使用,那么每个类型的成员变量都有一个默认的初始值
  i. byte、short、int、long 类型的初始值为 0
  ii. float、 double 类型的初始值为 0.0
  iii. char 类型的初始值'\u0000'
  iv. boolean 类型的初始值为 false

 

展开阅读全文

javabeab取到的都是null值

08-26

写了个小代码测试一下,结果发现javabean取的值都是null,不知道错在哪里,哪位高手帮忙看下,以下是源代码:rnQykx.javarnpackage com.jspdev.qykx;rnimport java.io.*;rnpublic class Qykx rnrn private String uusername;rn private String uuserid;rn private String uusetime;rn private String username;rnrnpublic String getUusername()rnrn return uusername;rnrnpublic void setUusername(String uusername)rnrn this.uusername=uusername;rnrnpublic String getUuserid()rnrn return uuserid;rnrnpublic void setUuserid(String uuserid)rnrn this.uuserid=uuserid;rnrnpublic String getUusetime()rnrn return uusetime;rnrnpublic void setUusetime(String uusetime)rnrn this.uusetime=uusetime;rnrnpublic String getUsername()rnrn return username;rnrnpublic void setUsername(String username)rnrn this.username=username;rnrnrnQykxBean.javarnpackage com.jspdev.qykx;rnimport java.sql.*;rnimport java.io.*;rnimport java.util.*;rnrnimport com.jspdev.util.*;rnrn public class QykxBeanrn rn private Connection con;rn public QykxBean()rn rn this.con=DataBaseConnection.getConnection();rn rn public void addUser(Qykx qykx) throws Exceptionrn rn rn String sql="insert into UserInfo values(?,?,?,?)";rn PreparedStatement pstmt=con.prepareStatement(sql);rn pstmt.setString(1,qykx.getUsername());rn pstmt.setString(2,qykx.getUusername());rn pstmt.setString(3,qykx.getUuserid());rn pstmt.setString(4,qykx.getUusetime());rn pstmt.execute();rn rn rn rn rn rnDataBaseConnection.javarnpackage com.jspdev.util;rnimport java.sql.*;rnrnpublic class DataBaseConnectionrnrn rn public static Connection getConnection()rn rn Connection con=null;rn String CLASSFORNAME="com.microsoft.jdbc.sqlserver.SQLServerDriver";rn String SERVANDDB="jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=jspdev";rn String USER="sa";rn String PWD="sa"; rn tryrn rn rn Class.forName(CLASSFORNAME);rn con = DriverManager.getConnection(SERVANDDB,USER,PWD);rn rn catch(Exception e)rn rn e.printStackTrace();rn rn return con;rn rnrn以下两个JSP是测试的文件rnadd.jsprn<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*,java.util.*,java.io.*"%>rnrnrnrn Untitled Documentrn rnrnrnrn rnrn 增加一个新的商品rn rn rn 产品ID:rn 产品名称:rnrn username:rnrn rnrnrnrnrnrnadd_do.jsprn<%@ page language="java" import="java.util.*,java.io.*,java.sql.*" contentType="text/html;charset=gb2312"%>rn<%@ page import="com.jspdev.qykx.*"%>rnrnrn Untitled Documentrn rnrnrnrnrnrnrnrn<% rnqykxBean.addUser(qykx);%>rnrn 注册成功rnrnrnrn测试时,add.jsp表单里面的数据提交到add_do.jsp,用request.Parameter("")测试了一下,可以取到传过来的值,rn但是插入数据库里面的却全是null,测试了javabean里面的getUsername(),输出的也是空值,不知道是怎么回事,来个高手帮忙解决一下,先谢了rnrn 论坛

没有更多推荐了,返回首页