19

下面是我创建的蜂巢表:

CREATE EXTERNAL TABLE Activity (
  column1 type, </br>
  column2 type
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ','
LOCATION '/exttable/';

在我的 HDFS 位置 /exttable 中,我有很多 CSV 文件,每个 CSV 文件还包含标题行。当我进行选择查询时,结果也包含标题行。

HIVE中有什么方法可以忽略标题行或第一行吗?

4

6 回答 6

27

您现在可以跳过 hive 0.13.0 中的标头计数。


tblproperties ("skip.header.line.count"="1");

于 2015-02-10T11:25:18.573 回答
25

如果您使用 Hive 0.13.0 或更高版本,您可以在表属性中指定“skip.header.line.count”="1" 以删除标题。

有关补丁的详细信息,请参阅:https ://issues.apache.org/jira/browse/HIVE-5795

于 2014-04-17T21:39:21.433 回答
6

假设您要加载 csv 文件,如下所示 /home/test/que.csv

1,TAP (PORTUGAL),AIRLINE
2,ANSA INTERNATIONAL,AUTO RENTAL
3,CARLTON HOTELS,HOTEL-MOTEL

现在,我们需要在 HDFS 中创建一个位置来保存这些数据。

hadoop fs -put /home/test/que.csv /user/mcc

下一步是创建一个表。有两种类型可供选择。参考this选择一个。

外部表的示例。

create external table industry_ 
(
MCC string ,
MCC_Name string,
MCC_Group string
)       
ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS TEXTFILE
LOCATION '/user/mcc/'
tblproperties ("skip.header.line.count"="1");

注意:通过 Spark SQL 访问时,CSV 的标题行将显示为数据行。测试:火花版本 2.4。

于 2019-12-10T07:20:27.637 回答
3

那没有。但是,您可以在加载到 HDFS 之前对文件进行预处理以跳过第一行 -

tail -n +2 withfirstrow.csv > withoutfirstrow.csv

或者,您可以将其构建到 HIVE 中的 where 子句中以忽略第一行。

于 2013-05-09T10:34:14.640 回答
0

如果您的 hive 版本不支持 tblproperties ("skip.header.line.count"="1"),您可以使用下面的 unix 命令忽略第一行(列标题),然后将其放入 HDFS。

 sed -n '2,$p' File_with_header.csv > File_with_No_header.csv
于 2015-06-16T10:05:34.217 回答
-2

要从 csv 文件中删除标题,请使用:

sed -i 1d filename.csv 
于 2016-08-16T22:43:02.223 回答