作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
Spark 1.5 和 Scala 2.10.6
我有一个使用“||”作为分隔符的数据文件。我很难通过这个解析来创建一个数据框。可以使用多个分隔符来创建数据框吗?该代码适用于单个损坏的管道,但不适用于多个分隔符。
我的代码:
val customSchema_1 = StructType(Array(
StructField("ID", StringType, true),
StructField("FILLER", StringType, true),
StructField("CODE", StringType, true)));
val df_1 = sqlContext.read
.format("com.databricks.spark.csv")
.schema(customSchema_1)
.option("delimiter", "¦¦")
.load("example.txt")
12345¦¦ ¦¦10
最佳答案
我遇到了这个问题并找到了一个很好的解决方案,我使用的是 spark 2.3,我觉得它应该适用于所有 spark 2.2+,但尚未对其进行测试。它的工作方式是我替换 ||
与 tab
然后内置的 csv 可以取一个 Dataset[String] .我使用制表符是因为我的数据中有逗号。
var df = spark.sqlContext.read
.option("header", "true")
.option("inferSchema", "true")
.option("delimiter", "\t")
.csv(spark.sqlContext.read.textFile("filename")
.map(line => line.split("\\|\\|").mkString("\t")))
希望这对其他人有帮助。
val ds = List("name||id", "foo||12", "brian||34", """"cray||name"||123""", "cray||name||123").toDS
ds: org.apache.spark.sql.Dataset[String] = [value: string]
val csv = spark.read.option("header", "true").option("inferSchema", "true").option("delimiter", "||").csv(ds)
csv: org.apache.spark.sql.DataFrame = [name: string, id: string]
csv.show
+----------+----+
| name| id|
+----------+----+
| foo| 12|
| brian| 34|
|cray||name| 123|
| cray|name|
+----------+----+
关于scala - 如何在 CSV 中使用双管道作为分隔符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41268182/
我是一名优秀的程序员,十分优秀!