Hive外部表-CSV文件 - 标题行

Ram*_*ana 16 hive

下面是我创建的hive表:

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

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

在HIVE中我们可以忽略标题行或第一行吗?

Var*_*pta 23

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

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


小智 20

您现在可以跳过配置单元0.13.0中的标题计数.


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

  • 请注意,这可以使用ALTER TABLE对现有表执行此操作.请参阅https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL#LanguageManualDDL-AlterTableProperties (2认同)

s_m*_*_mj 6

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

1,TAP (PORTUGAL),AIRLINE
2,ANSA INTERNATIONAL,AUTO RENTAL
3,CARLTON HOTELS,HOTEL-MOTEL
Run Code Online (Sandbox Code Playgroud)

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

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

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

外部表的示例。

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");
Run Code Online (Sandbox Code Playgroud)


kgu*_*u87 3

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

tail -n +2 withfirstrow.csv > withoutfirstrow.csv
Run Code Online (Sandbox Code Playgroud)

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