本文介绍如何在DLA中为TSV类型的文件创建表。
前提条件
创建数据表之前需要先创建OSS Schema,本文示例中所有文件数据表均使用以下OSS Schema。
CREATE SCHEMA dla_oss_db with DBPROPERTIES(
catalog='oss',
location 'oss://dlaossfile1/dla/'
)
单字符数据分隔符文件
TSV格式的文件也是纯文本文件,列与列之间的分隔符为Tab。
例如,OSS中有一个tsv_single.tsv文件,列与列之间以Tab分隔:oss://dlaossfile1/dla/tsv_single.tsv
,存储的数据如下所示。
Beijing China 010
ShangHai China 021
Tianjin China 022
建表语句为:
CREATE EXTERNAL TABLE tsv_single (
city STRING,
country STRING,
code INT
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS TEXTFILE
LOCATION 'oss://dlaossfile1/dla/';
查询结果为:
SELECT * FROM dla_oss_db.tsv_single
|----------|--------------|
| city |country| code |
|----------|----- |-----|
| Beijing | China| 10 |
| ShangHai | China| 21 |
| Tianjin | China| 22 |
多字符数据分隔符文件
TSV文件中字段的分隔符可以包含多个字符,例如,tsv_multidelimit.tsv文件中每列的字段分割符为||
,可将||
替换为您需要的分割符。
https://farm7.staticflickr.com/5769/21094803716_da3cea21b8_o.jpg||7825604||EEGQ0ZQ/OxJAIGzfJ6LMvw==
https://c1.staticflickr.com/4/3743/11539980784_b52f835317_o.jpg||4227077||oc+H0KgW0sxyEgAlfOiQDQ==
建表语句为:
CREATE EXTERNAL TABLE tsv_multidelimit (
image_address STRING,
id STRING,
name STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.MultiDelimitSerDe'
with serdeproperties(
"field.delim"="||"
)
STORED AS TEXTFILE LOCATION 'oss://dlaossfile1/dla/';
查询结果为:
SELECT * FROM dla_oss_db.tsv_multidelimit
|-----------------------------------------------------------------|---|--------|
| image_address | id| name |
| https://farm7.staticflickr.com/5769/21094803716_da3cea21b8_o.jpg
| 7825604| EEGQ0ZQ/OxJAIGzfJ6LMvw==|
| https://c1.staticflickr.com/4/3743/11539980784_b52f835317_o.jpg
| 4227077| oc+H0KgW0sxyEgAlfOiQDQ==|
文档内容是否对您有帮助?