我是这个领域的新手,我有多个分区CSV文件,这些记录有重复记录。我想读取Spark Scala代码中的CSV文件,并在读取时也删除重复项。
我尝试了dropDuplicate()
和read.format("csv")
的加载选项。
var df1 = thesparksession.read.format("csv").option("delimiter","|").option("header",true).load("path/../../*csv)
.withcolumn(col1)
df1.dropDuplicates().show()
如果说csv1具有值
emp1 1000 nuu -1903.33
emp2 1003 yuu 1874.44
csv2具有
emp1 1000 nuu -1903.33
emp4 9848 hee 1874.33
我只需要对emp1的一条记录进行进一步处理。
预期输出:
emp1 1000 nuu -1903.33
emp2 1003 yuu 1874.44
emp4 9848 hee 1874.33
答案 0 :(得分:0)
根据输入数据,CSV列由管道分隔,要将CSV读入数据框,您可以执行
var df1 = sparkSession.read.option("delimiter","|").csv(filePath)
//删除重复项
val result = df1.dropDuplicates
result.show
输出为:
+----+----+---+--------+
| _c0| _c1|_c2| _c3|
+----+----+---+--------+
|emp1|1000|nuu|-1903.33|
|emp4|9848|hee| 1874.33|
|emp2|1003|yuu| 1874.44|
+----+----+---+--------+
答案 1 :(得分:0)
dropDuplicates()
工作完美。
val sourcecsv = spark.read.option("header", "true").option("delimiter", "|").csv("path/../../*csv")
sourcecsv.show()
+-----+-----+----+--------+
|empid|idnum|name| credit|
+-----+-----+----+--------+
| emp1| 1000| nuu|-1903.33|
| emp2| 1003| yuu| 1874.44|
| emp4| 9848| hee| 1874.33|
| emp1| 1000| nuu|-1903.33|
| emp2| 1003| yuu| 1874.44|
+-----+-----+----+--------+
//dropDuplicates() on a dataframe works perfect as expected
sourcecsv.dropDuplicates().show()
+-----+-----+----+--------+
|empid|idnum|name| credit|
+-----+-----+----+--------+
| emp1| 1000| nuu|-1903.33|
| emp4| 9848| hee| 1874.33|
| emp2| 1003| yuu| 1874.44|
+-----+-----+----+--------+
请告诉我们是否还有其他问题。