红移位存取失效NullPooterExcept

学习如何解决当阅读Redshift表时发生的`NullPooterExceptive'错误

写由亚当巴夫拉卡

2022年6月1日

问题

有时读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)负载

文章有帮助吗