希望每個人都做得很好。
在針對該
- 我們之間有什么詳細的區別嗎?
- 是否有任何選項覆寫其他選項或它們一起作業?
使用鏈接問題中提到的示例來理解差異,但仍然有點困惑。謝謝你的幫助。
uj5u.com熱心網友回復:
讓我們來看幾個例子。
val df = Seq(
(1, "aaa"),
(2, "b,c"),
(3, "d$e"),
(4, "f%g")
).toDF("x", "y")
df.show
--- ---
| x| y|
--- ---
| 1|aaa|
| 2|b,c|
| 3|d$e|
| 4|f%g|
--- ---
每當您在值中使用逗號與欄位分隔符(如2,b,c)無法區分時,Spark 可以參考此類值。默認情況下它是雙引號(如2,"b,c"),但您可以使用引號選項對其進行自定義。
df.coalesce(1).write.mode("overwrite")
.option("quote", "$")
.csv("x")
1,aaa
2,$b,c$
3,$d\$e$
4,f%g
我們在這里使用了美元符號。不僅b,c被參考,而且由于d$e包含一美元,它也被參考并且美元本身被轉義。
我不知道你為什么要這樣做,但你可以要求 Spark 不要使用escapeQuotes選項轉義包含引號字符的欄位。
df.coalesce(1).write.mode("overwrite")
.option("quote", "$")
.option("escapeQuotes", false)
.csv("x")
1,aaa
2,$b,c$
3,d$e
4,f%g
在這里,d$e沒有被參考。
您還可以使用quoteAll強制它參考每個欄位。
df.coalesce(1).write.mode("overwrite")
.option("quote", "$")
.option("quoteAll", true)
.csv("x1")
$1$,$aaa$
$2$,$b,c$
$3$,$d\$e$
$4$,$f%g$
請注意,quoteAll = true使escapeQuotes 變得無關緊要。
如果您不喜歡默認的反斜杠,可以使用escape為引號內的引號字符自定義轉義字符。
df.coalesce(1).write.mode("overwrite")
.option("quote", "$")
.option("escape", "%")
.csv("x1")
1,aaa
2,$b,c$
3,$d%$e$
4,$f%g$
最后,請注意 中有一個獨立的轉義字符f%g,因此如果您想轉義它,請使用charToEscapeQuoteEscaping。
df.coalesce(1).write.mode("overwrite")
.option("quote", "$")
.option("escape", "%")
.option("quoteAll", true)
.option("charToEscapeQuoteEscaping", "^")
.csv("x1")
$1$,$aaa$
$2$,$b,c$
$3$,$d%$e$
$4$,$f^%g$
不,你不能再深入逃跑^……
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/534891.html
上一篇:跳過HttpResponseMessageContent.ReadAsStream的第一行(CSV標題行)
下一篇:從csv資料創建大影像
