Scala 使用空间分割文件,其中列数据也有空间
您好,我有一个数据文件,它以空格作为分隔符,并且每列的数据也包含空格。如何使用spark程序使用scala拆分它: 样本数据文件: student.txt 3列: 名称 地址 身份证 输出数据帧应为:Scala 使用空间分割文件,其中列数据也有空间,scala,apache-spark,apache-spark-sql,Scala,Apache Spark,Apache Spark Sql,您好,我有一个数据文件,它以空格作为分隔符,并且每列的数据也包含空格。如何使用spark程序使用scala拆分它: 样本数据文件: student.txt 3列: 名称 地址 身份证 输出数据帧应为: |Name |City |State |Id--| +-------------+------+-----------+-----+ | Abhi Rishii|Bangalore|Karnataka|1234| | Rinki siyty|Hydraba
|Name |City |State |Id--|
+-------------+------+-----------+-----+
| Abhi Rishii|Bangalore|Karnataka|1234|
| Rinki siyty|Hydrabad |Andra |2345|
+----+-----+-----------+---------+-----+
您的文件是以制表符分隔的文件。
您可以使用Spark的csv阅读器将此文件直接读取到数据帧中
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder().getOrCreate()
var studentDf = spark.read.format("csv") // Use "csv" for both TSV and CSV
.option("header", "true")
.option("delimiter", "\t") // Set delimiter to tab .
.load("student.txt")
.withColumn("_tmp", split($"Address", "\\,"))
.withColumn($"_tmp".getItem(0).as("City"))
.withColumn($"_tmp".getItem(1).as("State"))
.drop("_tmp")
.drop("Address")
studentDf .show()
|Name |City |State |Id--|
+-------------+------+-----------+-----+
| Abhi Rishii|Bangalore|Karnataka|1234|
| Rinki siyty|Hydrabad |Andra |2345|
+----+-----+-----------+---------+-----+
数据可以在引号内吗?然后你就可以读了。输入文件的来源是什么?数据不是按空格划分的,而是按制表符(\t)划分的。但是:地址列在传入的输入文件中有两个字段,分别为CityName和State。那么,我将如何拆分此地址列,以便在生成的数据框中,我可以将city和State作为两个单独的列谢谢你:-)你节省了我的时间:-@remis haroon
import org.apache.spark.sql.SparkSession
val spark = SparkSession.builder().getOrCreate()
var studentDf = spark.read.format("csv") // Use "csv" for both TSV and CSV
.option("header", "true")
.option("delimiter", "\t") // Set delimiter to tab .
.load("student.txt")
.withColumn("_tmp", split($"Address", "\\,"))
.withColumn($"_tmp".getItem(0).as("City"))
.withColumn($"_tmp".getItem(1).as("State"))
.drop("_tmp")
.drop("Address")
studentDf .show()
|Name |City |State |Id--|
+-------------+------+-----------+-----+
| Abhi Rishii|Bangalore|Karnataka|1234|
| Rinki siyty|Hydrabad |Andra |2345|
+----+-----+-----------+---------+-----+