教程:如何通過DLA實現資料檔案格式轉換
前言
Data Lake Analytics(後文簡稱 DLA)可以幫助使用者通過標準的SQL語句直接對儲存在OSS、TableStore上的資料進行查詢分析。
對於同一份資料來說,以不同的格式儲存,不僅在儲存空間上有差別,在使用DLA查詢時執行時間也是有差別的。通常來說,同樣大小的資料,以ORC和PARQUET儲存時,效能要優於以普通文字(CSV)的格式儲存。而大部分使用者在OSS上的資料是以CSV的格式儲存的,如果希望得到更好的查詢效率,往往需要藉助第三方工具先對檔案進行格式轉換,再將轉換後的資料檔案匯入OSS,再使用DLA進行查詢,比較麻煩。
本文將介紹如何在DLA中實現不同檔案格式之間的轉換。
轉換方法
簡單來說,就是在DLA中分別依據原始資料檔案的格式和目標資料檔案的格式,建立兩張表;然後通過INSERT INTO target_table SELECT FROM source_table 語句,將資料以目標表指定的格式寫入OSS中。
詳細示例
下面將以TPC-H中的orders.tbl檔案為例,詳細說明如何將普通文字檔案轉成ORC格式的檔案。
-
在DLA中建立表orders_txt,並將LOCATION指向檔案orders.tbl在OSS中的路徑。
CREATE EXTERNAL TABLE orders_txt ( O_ORDERKEY INT, O_CUSTKEY INT, O_ORDERSTATUS STRING, O_TOTALPRICE DOUBLE, O_ORDERDATE DATE, O_ORDERPRIORITY STRING, O_CLERK STRING, O_SHIPPRIORITY INT, O_COMMENT STRING ) ROW FORMAT DELIMITED FIELDS TERMINATED BY `|` STORED AS TEXTFILE LOCATION `oss://mybucket/datasets/jinluo/test/convert/orders.tbl`;
- 在DLA中建立表orders_orc, 並將LOCATION指向OSS中的目標位置,注意該路徑必須為已經存在的目錄,即以/結尾。
CREATE EXTERNAL TABLE orders_orc (
O_ORDERKEY INT,
O_CUSTKEY INT,
O_ORDERSTATUS STRING,
O_TOTALPRICE DOUBLE,
O_ORDERDATE DATE,
O_ORDERPRIORITY STRING,
O_CLERK STRING,
O_SHIPPRIORITY INT,
O_COMMENT STRING
)
STORED AS ORC LOCATION `oss://mybucket/datasets/jinluo/test/convert/orders_orc/`;
- 執行INSERT…SELECT語句,將orders_txt表中滿足要求的資料插入orders_orc中。
INSERT INTO orders_orc SELECT * FROM orders_txt;
- INSERT語句執行成功後,在OSS上目標表orders_orc指向的目錄下,會看到生成的資料檔案。
2018-11-22 10:27:15 0.00B Standard oss://mybucket/datasets/jinluo/test/convert/orders_orc/
2018-11-22 10:59:26 1005.62MB Standard oss://mybucket/datasets/jinluo/test/convert/orders_orc/20181122_025537_6_558tf_0eec9b17-dbc3-4ba0-a9df-4024aa6c7d97
2018-11-22 10:59:26 1005.74MB Standard oss://mybucket/datasets/jinluo/test/convert/orders_orc/20181122_025537_6_558tf_74016d12-a570-409d-b444-a216b69a3411
注意事項
- 每次執行INSERT語句不會覆蓋表目錄下已有的資料檔案,只會在目錄下新增新檔案;
- 由於DLA沒有對使用者BUCKET的刪除許可權,當INSERT語句__執行失敗__時,需要使用者__手動刪除__已經在LOCATION下生成的資料檔案。
- 在目標目錄下新生成的檔案個數,與實際執行的叢集環境有關,並不是固定的。
- 目前不支援寫入在建立時使用OpenCSVSerde, MultiDelimitSerDe, RegexSerDe和com.esri.hadoop.hive.serde.JsonSerde (Esri ArcGIS地理Json)的目標表。
更多文章
使用Data Lake Analytics從OSS清洗資料到AnalyticDB
基於 DataLakeAnalytics 的資料湖實踐
如何在阿里雲上使用Data Lake Analytics分析Table Store資料
Data Lake Analytics的Geospatial分析函式
相關文章
- ofd檔案如何轉換成pdf格式 電腦上ofd檔案如何轉換成pdf格式
- ofd檔案如何轉換成pdf格式 電腦ofd檔案如何免費轉換為pdf格式
- 如何將檔案PDF格式轉換成Word格式
- caj檔案怎麼轉換成word文件,簡單的檔案格式轉換教程
- plist檔案格式轉換器
- 資料匯入與預處理實驗二---json格式檔案轉換JSON
- 如何進行Linux下檔案編碼格式轉換Linux
- Microsoft Excel 教程「3」,如何在 Excel 中保護檔案、轉換資料型別?ROSExcel資料型別
- 如何給視訊格式的檔案進行格式轉換 可以轉為音訊格式嗎?音訊
- csv格式怎麼轉換成excel?csv格式轉換成excel格式檔案的方法Excel
- Hive資料格式轉換Hive
- 通過配置檔案(.htaccess)實現檔案上傳
- python實現圖書管理系統——通過excel檔案或者TXT檔案存放資料PythonExcel
- vscode如何將所有檔案格式lf批次轉換為crlfVSCode
- 如何在 Unix 和 DOS 格式之間轉換文字檔案
- chm檔案怎麼轉換成TXT格式?chm檔案快速轉化成TXT格式的方法
- DjVu檔案轉換PDF格式:DjVu To PDF Converter
- Permute for mac(媒體檔案格式轉換器)Mac
- layui tree資料格式轉換UI
- 通過Python實現對SQL Server 資料檔案大小的監控告警PythonSQLServer
- JAVA中GBK格式檔案和UTF-8格式檔案互相轉換Java
- PDF檔案如何轉成markdown格式
- QSV檔案怎麼開啟?QSV格式影片轉換成MP4格式教程
- CR2檔案怎麼轉換成jpg格式?快速轉換cr2檔案成jpg格式的操作技巧
- heic檔案如何轉換jpg?
- 免費版軟體文件檔案格式轉換
- Permute 3 for mac(媒體檔案格式轉換器)Mac
- 如何將.ipynb檔案轉換為.py檔案
- 用Aspose-Java免費實現 PDF、Word、Excel、Word互相轉換並將轉換過得檔案上傳OSS,返回轉換後的檔案路徑JavaExcel
- mxnet資料格式轉換為tensorflow,pytorch資料PyTorch
- 如何用Linux命令轉換檔案格式?linux運維怎麼入門Linux運維
- 使用UiBot實現批次html轉換成PDF檔案UIHTML
- sqlserver資料庫日期如何格式化-日期轉換字串SQLServer資料庫字串
- Pro Audio Converter for Mac(音訊檔案格式轉換器)Mac音訊
- Oracle資料庫日期格式轉換操作Oracle資料庫
- 音樂格式轉換:java程式碼實現Java
- mysql通過frm、idb檔案恢復資料MySql
- SpringMVC 通過commons-fileupload實現檔案上傳SpringMVC