我正在使用 Cloudera 的 Hive 版本,并尝试通过 csv 文件创建外部表,其中包含第一列中的列名称。这是我用来执行此操作的代码。
CREATE EXTERNAL TABLE Test (
RecordId int,
FirstName string,
LastName string
)
ROW FORMAT serde 'com.bizo.hive.serde.csv.CSVSerde'
WITH SerDeProperties (
"separatorChar" = ","
)
STORED AS TEXTFILE
LOCATION '/user/File.csv'
样本数据
RecordId,FirstName,LastName
1,"John","Doe"
2,"Jane","Doe"
谁能帮助我如何跳过第一行或者我是否需要添加中间步骤?
As of 蜂巢 v0.13.0 https://issues.apache.org/jira/browse/HIVE-5795, 您可以使用skip.header.line.count
表属性:
create external table testtable (name string, message string)
row format delimited
fields terminated by '\t'
lines terminated by '\n'
location '/testtable'
TBLPROPERTIES ("skip.header.line.count"="1");
Use ALTER TABLE
对于现有表:
ALTER TABLE tablename
SET TBLPROPERTIES ("skip.header.line.count"="1");
请注意,虽然它有效,但它也有自己的问题。当生成多个输出文件时,即减速器大于 1 时,它会跳过每个文件的第一条记录,这可能不一定是所需的行为。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)