![](/img/trans.png)
[英]Including double quotes while writing CSV using apache commons in java
[英]Removing Double Quotes from String type data while writing CSV using SPARK
我們在 Spark 中使用 Java。 當前要求是將 Dataset 寫入 Spark ,以 Space 作為分隔符。 以下是我嘗試過的代碼:
fooDataSetObject.coalesce(1).map((MapFunction<FooDataSet, FooDataSet>) fooDataSet ->
FileOperations.call(fooDataSet,broadcastedProperty),encoder).select("column","cons_zero",
"columnA","columnB","columnC","columnD",
"constants_value")
.write()
.format("com.databricks.spark.csv")
.option("inferSchema", true)
.option(Constants.DELIMITER, " ")
.option(Constants.IGNORE_LEADING_WHITESPACE, ApplicationConstants.FALSE)
.option(Constants.IGNORE_TRAILING_WHITESPACE, ApplicationConstants.FALSE)
.option("quote", " ")
.mode(SaveMode.Overwrite)
.save(path);
我使用 QuoteMode 作為 None 但沒有用。 當我嘗試使用 Quote Option with Value as "\ " 時,它會向文件添加特殊字符。 我還嘗試使用 Quote Option 並顯式應用 UTF-8 編碼選項。
從 Java 或 SPARK 的配置端還有什么需要做的嗎? 我在提交 spark 作業並將編碼器指定為 UTF-8 時嘗試使用 --conf 作為參數。
任何幫助或建議表示贊賞。
示例數據集值:
| 00123400| 93115212345678| 16| 0C|Tickets Cash-back | 57695857| 602140| 24394483| 24394483| 0| 99|60214057695857Tic...|66754325-83d1-426...| 24| null| 01|c28380c5-c926-4b4...|Identity Defence |Let's Go...Rewards| null| null| ON| 17| 12345678|GB 29 NWBK 12345 ...| 931152| null|cb032911-4c4e-406...| null| 20987|ABC...| GBR| 962000| cashback|null|X Batch | null| 99|12345 |
| 00123400| 93115212345678| 17| 0C|Tickets Cash-back | 57695857| 602140| 24394483| 24394483| 0| 99|60214057695857Tic...|23703242-e130-48b...| 24| null| 01|a4e52b47-8866-4d1...|Identity Defence |Let's Go...Rewards| null| null| ON| 17| 12345678|GB 29 NWBK 12345 ...| 931152| null|ee98f2e8-f489-4f3...| null| 20987|ABC...| GBR| 962000| cashback|null|X Batch | null| 99|12345 |
| 00123400| 93115212345678| 19| 0C|Tickets Cash-back | 57695857| 602140| 24394483| 24394483| 0| 99|60214057695857Tic...|c7138601-b26d-49d...| 24| null| 01|dfefcf96-4f56-4ab...|Identity Defence |Let's Go...Rewards| null| null| ON| 17| 12345678|GB 29 NWBK 12345 ...| 931152| null|dd9027bd-4fcd-45d...| null| 20987|ABC...| GBR| 962000| cashback|null|X Batch | null| 99|12345 |
| 00123400| 93115212345678| 20| 0C|Tickets Cash-back | 57695857| 602140| 24394483| 24394483| 0| 99|60214057695857Tic...|63cbd563-2af4-472...| 24| null| 01|9629f346-7dde-429...|Identity Defence |Let's Go...Rewards| null| null| ON| 17| 12345678|GB 29 NWBK 12345 ...| 931152| null|7b9d0698-0de1-45d...| null| 20987|ABC...| GBR| 962000| cashback|null|X Batch | null| 99|12345 |
輸出:
93115212345678 0 "GB 29 NWBK 12345 78978911 " 00123400 "12345 " 99 "60214057695857Tickets Cash-back 0"
瀏覽了以下文檔。
現在,即使我已將代碼更改為使用 SEP 而不是 DELIMETER,它也會出現同樣的問題,因為 Spark 添加了代表 NULL 字符的 \ 。 嘗試給出一個空字符串,結果相同。
所以我已經轉向使用 Spark Text 格式,並且我在后台使用 Java 格式化程序來創建我的逗號分隔行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.