scala - 使用 spark-shell 在 csv 文件中转义逗号
问题描述
我有一个包含以下两行的数据集
s.no,name,Country
101,xyz,India,IN
102,abc,UnitedStates,US
我试图转义每列的逗号,但不是最后一列我希望它们相同并使用 spark-shell 获取输出。我尝试使用下面的代码,但它给了我不同的输出。
val df = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").option("delimiter", ",").option("escape", "\"").load("/user/username/data.csv").show()
它给我的输出是
+----+-----+------------+
|s.no| name| Country|
+----+-----+------------+
| 101| xyz| India|
| 102| abc|UnitedStates|
+----+-----+------------+
但是我希望输出如下所示我在这里缺少什么有人可以帮助我吗?
s.no name Country
101 xyz India,IN
102 abc UnitedStates,US
解决方案
我建议read
所有字段提供schema
和忽略数据中存在的标题,如下所示
case class Data (sno: String, name: String, country: String, country1: String)
val schema = Encoders.product[Data].schema
import spark.implicits._
val df = spark.read
.option("header", true)
.schema(schema)
.csv("data.csv")
.withColumn("Country" , concat ($"country", lit(", "), $"country1"))
.drop("country1")
df.show(false)
输出:
+---+----+----------------+
|sno|name|Country |
+---+----+----------------+
|101|xyz |India, IN |
|102|abc |UnitedStates, US|
+---+----+----------------+
希望这可以帮助!
推荐阅读
- css - 为什么我在打印模式下看到 SVG 图标附近有多余的线条?
- kotlin - 像表达式一样使用 foreach
- c# - 如何从 Jtoken 调用值
- java - 努力通过 REST 上传文件
- git - 如何从 Github 组织的所有存储库中获取提交
- asp.net-core - 如何为 FROM 命令生成 docker 映像路径
- python - 如何在 VS Code 中为选择的文件、glob 或类似文件关闭排序导入?
- python - 人脸识别opencv得到类型元组错误
- matlab - 带有 textdat 的文本文件包含字符的单元格
- c# - 使用 ExcelPackage 导入 XLSX 文件会引发错误 .NET CORE