我正在尝试将csv文件加载到具有我自己定义的模式的Dataframe中。我只需要在将坏数据作为Dataframe加载时识别它。
我认为坏数据是
当模式告诉integer时,输入包含字符串
意外/错误的分隔符
当我的模式显示nullable=>false时,任何列数据如下所示
无效的
''
//什么都没有
我正在使用一个额外的列“\u corrupt\u record”来重定向上述3种情况下的记录。
我可以看到这个额外的列在案例1)和案例2)中被填充,但是当数据为null(案例3.3)时,记录不会重定向到这个额外的列。它适用于3.1和3.2。
我哪里做错了?
在将原始文件加载到Dataframe时,您可以向我建议在实时项目中使用的任何其他方法来处理/重定向坏数据到文件中。
输入文件products.txt模式:产品(产品标识、产品名称、产品类型、产品版本、产品价格)
代码:
val spark= new sql.SparkSession.Builder().master("local[*]").getOrCreate()
val products_schema= StructType(List
(
StructField("product_id",IntegerType,false),
StructField("product_name",StringType,false),
StructField("product_type",StringType,true),
StructField("product_version",StringType,true),
StructField("product_price",StringType,true),
StructField("_corrupt_record",StringType,true)
)
)
val products_Staging_df=spark.read.option("header", false).option("delimiter", "|").schema(products_schema).csv("C:\\Users\\u6062310\\Desktop\\DBS\\Product.txt")
products_Staging_df.printSchema()
products_Staging_df.show()`
我放了一些坏记录,当我使用df.show()时,我希望product\u id=的记录也在\u corrupt\u record列下。但它不会来。
只有null和“”工作正常。如何处理空白?
暂无答案!
目前还没有任何答案,快来回答吧!