问题
有时读redshift表
scala原创df=spark.readformat("com.databricks.spark.redshift").选项(url,url)选项(“用户”)用户选项(密码密码)选项(query查询)option("forward_spark_s3_credentials", true).选项(tmpdir,path)负载
spark作业投出NullPointerException:
Caused by: java.lang.NullPointerException at org.apache.spark.sql.catalyst.expressions.codegen.UnsafeRowWriter.write(UnsafeRowWriter.java:194)
因果
问题出自Spark读取Redtople数据的方式亚马逊红移数据源使用Redshift卸载格式读取Redshift数据:spark优先发布卸载命令redtevile转储表内容卸载格式转到临时文件,然后spark扫描那些临时文件文本基础卸载格式空字符串和空字符串互不区分默认-两者都编码为生成文件中的空字符串spark-red移位读取数据卸载格式时,没有足够的信息说明输入是空字符串或空字符串,而目前它只是视它为空字符串
求解
Scala设置无效至真实性面向所有字符串列数 :
scala导入org.ache.sql类型.{StructFrield(c,StringType,_,m)
Python语中:
sql类型导入StructType、StructForm、StringType new_schema=StructType
要使用此函数,获取模式原创df后修改sche字符串列到无效重读 Redtople
scalavaldf=spark.read.schemaformat("com.databricks.spark.redshift").选项(url,url)选项(“用户”)用户选项(密码密码)选项(query查询)option("forward_spark_s3_credentials", true).选项(tmpdir,path)负载