DataLakeAnalytics中OSSLOCATION的使用說明
前言
Data Lake Analytic(後文簡稱 DLA)可以幫助使用者通過標準的SQL語句直接對儲存在OSS、TableStore上的資料進行查詢分析。
在查詢前,使用者需要根據資料檔案的格式和內容在DLA中建立一張表。Data Lake Analytics + OSS資料檔案格式處理大全 一文中介紹瞭如何定義表的SERDE和ROW FORMAT。
本文將以儲存在OSS上的檔案為例詳細介紹如何指定表LOCATION。
LOCATION
DLA中的建表語句的語法為
CREATE EXTERNAL TABLE [IF NOT EXISTS] [db_name.]table_name
[(col_name data_type [COMMENT col_comment], ... [constraint_specification])]
[COMMENT table_comment]
[PARTITIONED BY (col_name data_type [COMMENT col_comment], ...)]
[ROW FORMAT row_format]
[STORE AS file_format]
| STORED BY `storage.handler.class.name` [WITH SERDEPROPERTIES (...)]
LOCATION oss_path
其中 LOCATION可以是資料檔案本身,也可以是資料檔案所在的目錄。
LOCATION是資料檔案
建表時可以將表直接關聯到資料檔案,此時的LOCATION需要是該檔案在OSS上的絕對路徑。
例如:
CREATE EXTERNAL TABLE loc_file_csv(
N_NATIONKEY INT,
N_NAME STRING,
N_REGIONKEY INT,
N_COMMENT STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY `|`
STORED AS TEXTFILE
LOCATION `oss://my-bucket/datasets/test/test_create/create_table/csv/dir1/dir2/nation.csv`;
LOCATION是目錄
LOCATION也可以指向OSS上的目錄,該目錄下的檔案即是表的資料檔案。
建表時,可以通過設定屬性 recursive.directories 來控制是遍歷該目錄下的所有資料檔案。預設或不顯式指定recursive.directories,DLA會解析為false,即不遍歷。
例如,OSS上的目錄結構為
2018-07-05 11:16:11 1752.00B Standard oss://my-bucket/datasets/test/test_create/create_table/csv/dir1/dir2/nation.csv
2018-07-05 11:15:57 1752.00B Standard oss://my-bucket/datasets/test/test_create/create_table/csv/dir1/nation.csv
2018-07-05 11:16:17 1752.00B Standard oss://my-bucket/datasets/test/test_create/create_table/csv/nation.csv
建表語句為:
CREATE EXTERNAL TABLE loc_file_csv(
N_NATIONKEY INT,
N_NAME STRING,
N_REGIONKEY INT,
N_COMMENT STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY `|`
STORED AS TEXTFILE
LOCATION `oss://my-bucket/datasets/test/test_create/create_table/csv/`
TBLPROPERTIES (`recursive.directories` = `false`);
當recursive.directories=false,該表的資料檔案為只有LOCATION下的nation.csv一個檔案,即
oss://my-bucket/datasets/test/test_create/create_table/csv/nation.csv
建表語句為:
CREATE EXTERNAL TABLE loc_file_csv(
N_NATIONKEY INT,
N_NAME STRING,
N_REGIONKEY INT,
N_COMMENT STRING
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY `|`
STORED AS TEXTFILE
LOCATION `oss://my-bucket/datasets/test/test_create/create_table/csv/`
TBLPROPERTIES (`recursive.directories` = `true`);
當recursive.directories=true,該表的資料檔案為LOCATION目錄下及其子目錄下的所有csv檔案,即
oss://my-bucket/datasets/test/test_create/create_table/csv/nation.csv
oss://my-bucket/datasets/test/test_create/create_table/csv/dir1/nation.csv
oss://my-bucket/datasets/test/test_create/create_table/csv/dir1/dir2/nation.csv
注意事項
- 當LOCATION為目錄時,DLA預設該目錄下的資料檔案為相同的資料格式,並根據建表語句中指定的SERDE解析檔案。當目錄下的資料檔案格式不同時,DLA會解析失敗,導致表中的資料資訊錯誤,影響查詢結果。
例如,建表時指定STORED AS TEXTFILE,但是目錄下除了csv檔案,還有orc格式的檔案。這種情況下,在建表和查詢時並不會報錯,但是SELECT時可能會看到資料亂碼或不準確。
- 目前不支援CSV檔案有header。當檔案的第一行為header時,需要使用者自己手動處理資料;否則,會將header識別為一條資料記錄
為了給大家帶來更好的查詢分析體驗, 目前DLA還在不斷完善中,歡迎大家試用,提出您的寶貴意見或建議。
相關文章
- oradebug的使用說明
- 使用說明
- C++中map的使用詳解說明C++
- JiaoZiVideoPlayer使用說明(持續更新中...)IDE
- gRPC之.Net6中的初步使用說明RPC
- cmake使用說明
- certbot 使用說明
- FreeSql 使用說明SQL
- postman 使用說明Postman
- QLExpress使用說明Express
- WebApiClientCore使用說明WebAPIclient
- ApplicationContextAware使用說明APPContext
- Jupiter 使用說明
- spring中的IOC說明Spring
- Vue元件中prop屬性使用說明Vue元件
- 關於 Jupyter 的使用說明
- Keil中的USE MicroLib說明
- oracle orapwd使用說明Oracle
- markdown使用小說明
- axios使用說明書iOS
- JPA EntityManager使用說明
- wc 命令使用說明
- 在DataLakeAnalytics中使用檢視
- Spring的@Qualifier註解使用說明Spring
- Webots和ROS的使用說明(譯)WebROS
- pearadmin前端框架中 http模組如何使用說明前端框架HTTP
- cityAreaSelect.js使用說明JS
- JavaScript の querySelector 使用說明JavaScript
- 微前端說明以及使用前端
- C# BitmapData使用說明C#
- jarsigner 簡單使用說明JAR
- OpenGrok簡單使用說明
- Docker 使用者操作使用說明Docker
- kafka的Docker映象使用說明(wurstmeister/kafka)KafkaDocker
- PhpCms自定義欄位的使用說明PHP
- jQuery - 函式 $.ajaxSetup 的說明和使用jQuery函式
- 舉例說明如何使用WebSQL?WebSQL
- scapy函式 IP() 使用說明函式