如何在 csv 文件中忽略带引号的换行符以创建 Hive 外部表?
Posted
技术标签:
【中文标题】如何在 csv 文件中忽略带引号的换行符以创建 Hive 外部表?【英文标题】:How to ignore new line characters with quotes in csv file for creating Hive External Table? 【发布时间】:2020-09-13 05:17:25 【问题描述】:作为 R 数据集大量数据迁移的一部分,我正在创建 Hive 外部表。我使用 R 程序进行以下操作。 读取 R 中的所有 rds/sas 文件 --> 创建 csv --> 上传到 hdfs --> 创建 Hive 外部表
问题:引号内的某些字段值中有新字符,因此我的源数据集的行数较少,而配置单元表显示更多行,因为一些记录正在移动到下一个新行。 请参阅下面的示例记录。
Excel中的CSV文件显示数据如下:
Notepad++ 显示如下:
问题:如何仅忽略/删除引号内的换行符,而不是行尾的换行符,使用 R 程序。
【问题讨论】:
【参考方案1】:这听起来更像是 Hive 的问题,我不熟悉它,但它似乎应该支持字段内的换行符。
您可以在保存到 csv 之前执行此操作:
# Example data.frame
DF <- data.frame(1, "aaa", "bb\nb")
library(tidyverse)
DF %>%
mutate(across(everything(), ~str_remove_all(.x, "\n"))) %>%
write_csv("test.csv")
或基本的 R 等效项:
for(col in names(DF))
DF[[col]] <- gsub("\n", "", DF[[col]])
【讨论】:
我认为这将删除所有 "\n" 但我只想删除引号内的那些而不是行尾,因为行尾 "\n" 需要识别新行或行尾。 如果你在data.frame 之前 写csv,没有行尾。这只会在字段内完成。调用wite.csv()
或 write_csv()
后,字段会被引号括起来,并用逗号粘在一起,并根据需要添加换行符。以上是关于如何在 csv 文件中忽略带引号的换行符以创建 Hive 外部表?的主要内容,如果未能解决你的问题,请参考以下文章