我有以下数据集作为输入
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)
答案 0 :(得分:1)
我试过你的问题陈述。我正在使用 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()
删除空白或空数据。
请注意,如果您只有空行,那么 Spark 不会在数据帧中考虑。 Spark 在读取自身时删除空行。