csv - 将包含带引号的值的表导出到 hive 中的本地 csv

标签 csv hadoop hive export-to-csv

我正在尝试将表导出到配置单元中的本地 csv 文件。

INSERT OVERWRITE LOCAL DIRECTORY '/home/sofia/temp.csv' 
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY ',' 
ESCAPED BY '\\' 
LINES TERMINATED BY '\n'
select * from mytable;

问题是某些值包含换行符“\n”,结果文件变得非常困惑。

在 Hive 中导出时,是否有任何方法可以将值括在引号中,以便 csv 文件可以包含特殊字符(尤其是换行符)?

最佳答案

一种可能的解决方案是使用Hive CSV SerDe(序列化器/反序列化器)。它提供了一种指定自定义分隔符、引号和转义字符的方法。

限制:

它不处理嵌入换行符

可用性:

CSV Serde 可在Hive 0.14 中使用。甚至更大。

背景:

CSV SerDe 基于 https://github.com/ogrodnek/csv-serde ,并添加到 HIVE-7777. 中的 Hive 发行版中

用法:

SerDe适用于大多数CSV数据,但不处理嵌入换行符。要使用 SerDe,请指定完全限定类名 org.apache.hadoop.hive.serde2.OpenCSVSerde

原始文档可在 https://github.com/ogrodnek/csv-serde 获取。 .

CREATE TABLE my_table(a string, b string, ...)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
   "separatorChar" = "\t",
   "quoteChar"     = "'",
   "escapeChar"    = "\\"
)  
STORED AS TEXTFILE;

默认分隔符、引号和转义字符(如果未指定)

DEFAULT_ESCAPE_CHARACTER \
DEFAULT_QUOTE_CHARACTER  "
DEFAULT_SEPARATOR        ,

引用:Hive csv-serde

关于csv - 将包含带引号的值的表导出到 hive 中的本地 csv,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33254183/

相关文章:

csv - PowerShell错误:Import-CSV无法打开文件

hadoop - 无法通过临时Hive表将文本数据作为ORC加载到Hive表中

hadoop - 通过 oozie 运行的配置单元查询的 CPU 时间

amazon-web-services - 如何在 hive (AWS Data Pipeline) 中使用 scriptVariables

hadoop - hive 和用户定义的功能

xml - 将 XML 文件加载到 Hive 表

javascript - 嵌套 JSON 对象 : Remove reference to source level JSON in CSV Export

linux - 使用linux删除csv文件中的重复项并根据时间戳获取最新数据

java - Csv 文件循环工作错误

hadoop - 无法在 pig 中执行求和运算