从 Hadoop Hue 下载 csv 文件 returns 无法读取的代码

download the csv file from Hadoop Hue returns unreadable code

我使用 Apache Hue(用户界面)与 Hadoop 和 Hive 交互。

我将配置单元查询的结果保存在 HDFS 目录中。 (结果集真的很大)

然后,我用hue文件浏览器下载了结果文件。

一切看起来都很好,但是当我打开 csv 文件时,我发现分隔符是一些不可读的代码,如下所示:

如何解决分隔符问题?

SOH(标题开始)或其 Seq 等效项 Ctrl + A 是 Hive 使用的默认字段分隔符。而所有的\N都代表NULL。

这个问题的解决方案取决于使用的 Hive 版本

As of Hive 0.11.0 the separator used can be specified; in earlier versions it was always the ^A character ([=14=]1). However, custom separators are only supported for LOCAL writes in Hive versions 0.11.0 to 1.1.0 – this bug is fixed in version 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 ',' ...

参考HIVE-3682 and HIVE-5672.

我会建议你用“,”替换嘈杂的'SOH',并直接删除'\N'。

如果你使用python,它只是一个one-liner:

pd.read_csv("your_file.csv", sep="[=10=]1", na_values='\N']).to_csv("your_new_file.csv")