【问题标题】:Skip first line of csv while loading in hive table在 hive 表中加载时跳过 csv 的第一行
【发布时间】:2014-01-15 19:01:58
【问题描述】:

朋友们好,

我借助以下命令在 hive 中创建了表 -

CREATE TABLE db.test 
  ( 
     fname STRING, 
     lname STRING, 
     age   STRING, 
     mob   BIGINT 
  ) row format delimited fields terminated BY '\t' stored AS textfile; 

现在要从文件中加载表中的数据,我正在使用以下命令 -

load data local inpath '/home/cluster/TestHive.csv' into table db.test;

问题是,所有行都被插入,我不想要第一行,因为它只包含列名。

请建议我跳过第一行的方法。

提前致谢。

【问题讨论】:

标签: hadoop hive hiveql


【解决方案1】:

只是不要在同一个 CLI 命令中混合双引号和单引号:

CREATE TABLE db.test 
  ( 
     fname STRING, 
     lname STRING, 
     age   STRING, 
     mob   BIGINT 
  ) row format delimited fields terminated BY '\t' tblproperties('skip.header.line.count'='1') stored AS textfile; 

否则配置单元加载 NULL 值。

【讨论】:

    【解决方案2】:

    仅适用于已经创建带有标题的表格的人。这是相同的 alter 命令。

    ALTER TABLE tablename SET TBLPROPERTIES ("skip.header.line.count"="1");

    【讨论】:

      【解决方案3】:

      要做到这一点,您可以使用 hive 的属性 TBLPROPERTIES ("skip.header.line.count"="1")
      您也可以参考示例 -强>

      CREATE TABLE temp 
        ( 
           name STRING, 
           id   INT 
        ) 
      row format delimited fields terminated BY '\t' lines terminated BY '\n' 
      tblproperties("skip.header.line.count"="1"); 
      

      【讨论】:

      • 在 Hive 上工作,但不在 Impala 上。
      • 您是否在 Hive 中创建了表并从 Impala 访问?
      • 不,我直接在 Impala shell 上使用了 CREATE TABLE 语句和 tblproperty。我没有尝试 Hive 中的语句,然后从 Impala 访问同一个表。
      猜你喜欢
      • 1970-01-01
      • 2019-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      • 2018-06-12
      • 2018-02-02
      • 2020-12-15
      相关资源
      最近更新 更多