TSV

本文介绍如何在DLA中为TSV类型的文件创建表。

前提条件

创建数据表之前需要先创建OSS Schema,本文示例中所有文件数据表均使用以下OSS Schema。

  1. CREATE SCHEMA dla_oss_db with DBPROPERTIES(
  2. catalog='oss',
  3. location 'oss://dlaossfile1/dla/'
  4. )

单字符数据分隔符文件

TSV格式的文件也是纯文本文件,列与列之间的分隔符为Tab。

例如,OSS中有一个tsv_single.tsv文件,列与列之间以Tab分隔:oss://dlaossfile1/dla/tsv_single.tsv,存储的数据如下所示。

  1. Beijing China 010
  2. ShangHai China 021
  3. Tianjin China 022

建表语句为:

  1. CREATE EXTERNAL TABLE tsv_single (
  2. city STRING,
  3. country STRING,
  4. code INT
  5. )
  6. ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
  7. STORED AS TEXTFILE
  8. LOCATION 'oss://dlaossfile1/dla/';

查询结果为:

  1. SELECT * FROM dla_oss_db.tsv_single
  2. |----------|--------------|
  3. | city |country| code |
  4. |----------|----- |-----|
  5. | Beijing | China| 10 |
  6. | ShangHai | China| 21 |
  7. | Tianjin | China| 22 |

多字符数据分隔符文件

TSV文件中字段的分隔符可以包含多个字符,例如,tsv_multidelimit.tsv文件中每列的字段分割符为||,可将||替换为您需要的分割符。

  1. https://farm7.staticflickr.com/5769/21094803716_da3cea21b8_o.jpg||7825604||EEGQ0ZQ/OxJAIGzfJ6LMvw==
  2. https://c1.staticflickr.com/4/3743/11539980784_b52f835317_o.jpg||4227077||oc+H0KgW0sxyEgAlfOiQDQ==

建表语句为:

  1. CREATE EXTERNAL TABLE tsv_multidelimit (
  2. image_address STRING,
  3. id STRING,
  4. name STRING
  5. )
  6. ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe'
  7. with serdeproperties(
  8. "field.delim"="||"
  9. )
  10. STORED AS TEXTFILE LOCATION 'oss://dlaossfile1/dla/';

查询结果为:

  1. SELECT * FROM dla_oss_db.tsv_multidelimit
  2. |-----------------------------------------------------------------|---|--------|
  3. | image_address | id| name |
  4. | https://farm7.staticflickr.com/5769/21094803716_da3cea21b8_o.jpg
  5. | 7825604| EEGQ0ZQ/OxJAIGzfJ6LMvw==|
  6. | https://c1.staticflickr.com/4/3743/11539980784_b52f835317_o.jpg
  7. | 4227077| oc+H0KgW0sxyEgAlfOiQDQ==|