我正试图从hdfs文件夹加载2个csv文件,
Create Table Click_data ( A Timestamp, B string, C int, D BIGINT, E string, F string, G decimal(10,2), H BIGINT, I string)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
STORED AS TEXTFILE Location ‘/user/data/’
tblproperties ("skip.header.line.count"="1");
有两个csv格式的数据集,我们需要跳过标题,如何从hdfs目录将两个文件加载到同一个表中。
1条答案
按热度按时间ktecyv1j1#
表位置中可以有许多文件,所有文件中的头都将被跳过。表位置通常命名为表:
/user/data/click_data
. 每个table都应该有自己的位置,/user/data/
似乎位置不正确,它看起来像其他表位置所在的公用文件夹。仔细检查位置是否只属于您的table。使用将两个文件复制到表位置“/user/data/”
hadoop fs -cp
或者hdfs dfs -cp
或aws cli命令aws s3 cp
:也可以使用“加载配置单元”命令:
在这两种情况下,两个文件中的数据都是可选择的,并且都跳过了头文件。
或者,您可以在文件所在位置的顶部创建表(如果没有其他文件或文件夹不属于您的表)。只需指定正确的位置。使用
create EXTERNAL table ...
. 也可以在不指定位置的情况下创建表,使用DESC FORMATTED
命令,然后将文件复制到该位置。将文件加载到表位置后,使用analyze命令更好地刷新表统计信息,这将允许cbo正常工作。请阅读以下内容:https://stackoverflow.com/a/41021682/2700344