spark-scala数据帧中所有列的值都为null



我有下面的数据集作为输入

816|27555832600|01|14|25|  |  
825|54100277425|14|03|25|15|  
9003|54100630574|  |  |  |  |  
809|51445926423|12|08|25|17|  

获取以下作为输出:

null|null|null|null|null|null|
825|54100277425|  14|   3|  25|  15|
null|null|null|null|null|null|
809|51445926423|  12|   8|  25|  17|

预期产量

816|27555832600|01|14|25|null|  
825|54100277425|14|03|25|15|  
9003|54100630574|null|null|null|null|  
809|51445926423|12|08|25|17|  

我已经尝试了以下代码来加载.txt或.bz2文件。

val dataset = sparkSession.read.format(formatType)
.option("DELIMITER", "|"))
.schema(schema_new)
.csv(dataFilePath)

我试过你的问题陈述。我使用Spark 3.0.1版本来解决这个用例。它按预期工作。请尝试下面的代码片段。

val sampleDS = spark.read.options(Map("DELIMITER"->"|")).csv("D:\DataAnalysis\DataSample.csv")
sampleDS.show()
Output ->
+----+-----------+---+---+---+---+---+
| _c0|        _c1|_c2|_c3|_c4|_c5|_c6|
+----+-----------+---+---+---+---+---+
| 816|27555832600| 01| 14| 25|   |   |
| 825|54100277425| 14| 03| 25| 15|   |
|9003|54100630574|   |   |   |   |   |
| 809|51445926423| 12| 08| 25| 17|   |
+----+-----------+---+---+---+---+---+

考虑输入数据中是否有空行。

添加空行后输入数据

816|27555832600|01|14|25|  |  
825|54100277425|14|03|25|15|  
9003|54100630574|  |  |  |  |  
||||
809|51445926423|12|08|25|17| 

读取数据后,您可以简单地使用sampleDS.na.drop.show()来删除空白或null数据。

请注意,如果您只有空行,则Spark不会在数据帧中考虑。Spark在读取自身时删除空行

最新更新