我们正在读取一个以制表符分隔的.txt文件,没有值的记录缺少制表符。例如,Thor中的M后的选项卡丢失。然后使用Pyspark read读取文件,将记录移至BAD_RECORD。
Name Age Sex Final
Cold 18 M Yes
Bold 20 M No
Thor 30 M
Ice 40
Pyspark代码示例
source_schema = StructType([
StructField("Name", StringType(), True),
StructField("Age", StringType(), True),
StructField("Sex", StringType(), True),
StructField("Final", StringType(), True)])
in_delimiter = "\t"
df_raw_file = sparkSession.read \
.format("csv") \
.option("delimiter", in_delimiter) \
.option("header", "false") \
.option("inferSchema", "true") \
.option("nullValue", "null") \
.option("treatEmptyValuesAsNulls", "true") \
.option("columnNameOfCorruptRecord", "BAD_RECORD") \
.schema(source_schema) \
.load("CSV_READ.txt")
已经尝试过 treatEmptyValuesAsNulls 和 nullValue ,但是仍然没有运气,因为记录仍在BAD_RECORD中捕获。
还有其他可以尝试的Spark选项吗?