【问题标题】:Hive External table-CSV File- Header rowHive 外部表-CSV 文件-标题行
【发布时间】:2013-05-09 08:09:11
【问题描述】:

下面是我创建的 hive 表:

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

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

在 HIVE 中有什么方法可以忽略标题行或第一行吗?

【问题讨论】:

标签: hive


【解决方案1】:

您现在可以跳过 hive 0.13.0 中的标头计数。


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

【讨论】:

【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

    1,TAP (PORTUGAL),AIRLINE
    2,ANSA INTERNATIONAL,AUTO RENTAL
    3,CARLTON HOTELS,HOTEL-MOTEL
    

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

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

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

    外部表示例。

    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");
    

    注意:通过 Spark SQL 访问时,CSV 的标题行将显示为数据行。 测试:spark 2.4 版。

    【讨论】:

      【解决方案4】:

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

      tail -n +2 withfirstrow.csv > withoutfirstrow.csv
      

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

      【讨论】:

      • 如何在 HIVE 中编写 where 子句以忽略第一行?
      • 如果数据包含标题行,那么您可以在 HQL 中使用 where col 'header column name',假设数据本身不包含该值。 Hive 0.13.0 或更高版本的更好选择是在定义表时使用 skip.header.line.count。
      • 我使用了 hive tblproperties ("skip.header.line.count"="1"); 属性。但我仍然可以在 hdfs 表位置看到标题。如何从插入 hdfs 中删除标题行
      【解决方案5】:

      如果您的 hive 版本不支持 tblproperties ("skip.header.line.count"="1"),您可以使用下面的 unix 命令忽略第一行(列标题),然后将其放入 HDFS。

       sed -n '2,$p' File_with_header.csv > File_with_No_header.csv
      

      【讨论】:

        【解决方案6】:

        要从 csv 文件中删除标题,请使用:

        sed -i 1d filename.csv 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-03-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-06-26
          • 2021-06-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多