【发布时间】:2017-02-03 20:20:44
【问题描述】:
我使用 Apache Hue(用户界面)与 Hadoop 和 Hive 进行交互。
我将 hive 查询的结果保存在 HDFS 目录中。 (结果集真的很大)
然后,我用hue文件浏览器下载了结果文件。
一切看起来都很好,但是当我打开 csv 文件时,我发现分隔符是一些不可读的代码,像这样:
如何解决分隔符问题?
【问题讨论】:
我使用 Apache Hue(用户界面)与 Hadoop 和 Hive 进行交互。
我将 hive 查询的结果保存在 HDFS 目录中。 (结果集真的很大)
然后,我用hue文件浏览器下载了结果文件。
一切看起来都很好,但是当我打开 csv 文件时,我发现分隔符是一些不可读的代码,像这样:
如何解决分隔符问题?
【问题讨论】:
SOH(标题开始)或其 Seq 等效项 Ctrl + A 是 Hive 使用的默认字段分隔符。所有\N 都代表NULL。
解决方案取决于使用的 Hive 版本
从 Hive 0.11.0 开始,可以指定使用的分隔符;在早些时候 版本始终是 ^A 字符 (\001)。然而,自定义 仅 Hive 版本 0.11.0 中的本地写入支持分隔符 到 1.1.0 – 这个错误在 1.2.0 版本中修复
如果使用 Hive >= 1.2.0,您可以在 INSERT OVERWRITE 语句中指定 FIELDS TERMINATED BY 子句来选择分隔符。
INSERT OVERWRITE DIRECTORY hdfs_directory SELECT statement ...
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ',' ...
【讨论】:
我会建议你把嘈杂的 'SOH' 替换为 "," 并直接删除 '\N'。
如果你使用python,它只是一个单行:
pd.read_csv("your_file.csv", sep="\001", na_values='\N']).to_csv("your_new_file.csv")
【讨论】: