我想创建一个脚本加载到配置单元tsv文件。但是由于.tsv文件包含一个头文件,所以我首先必须创建一个没有它的临时文件。
在my script.hql中,我有以下内容:
DROP TABLE metadata IF EXISTS ;
CREATE TABLE metadata (
id INT,
value STRING
)
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE ;
! tail -n +2 metadata.tsv > tmp_metadata.tsv ;
LOAD DATA LOCAL 'tmp_metadata.tsv' INTO metadata ;
问题是Hive抱怨 >
这将导致重定向到新脚本失败,因此脚本失败。
我怎样才能解决这个问题?
1条答案
按热度按时间kpbwa7wx1#
1创建一个名为
script.sh
并在shell脚本中添加以下内容:2而不是你的
script.hql
:删除表元数据(如果存在);
创建表元数据(id int,value string)行格式分隔字段,以存储为textfile的'\t'结尾;
! tail-n+2 metadata.tsv>tmp\u metadata.tsv;
将数据本地“tmp\u metadata.tsv”加载到元数据中;
将此添加到您的
script.hql
:sudo chmod 777 script.sh
./script.sh