pyspark里首先构建schema
table_schema = StructType([
StructField("card_sequence", StringType(), True),
StructField("card_id", IntegerType(), True)
])
StringType类型可以接受null,后面的True表示传入值是否允许为空
但是IntegerType类型不能接受null和非int类型值,例如传入空值、"汉字"这种,会判断为异常值,这样通过构建schema来sc.textfile读取hdfs路径的文件时,如果数据转换不成功,会直接判断为异常数据
报错信息:
'error', "index:22, msg:invalid literal for int() with base 10: '\\\\N'
解决办法:在前置数仓中做好空值判断nvl(XXX,0),这样避免读取的数据里,int类型字段出现空值