全部產品
Search
文件中心

Platform For AI:讀CSV檔案

更新時間:Jul 13, 2024

讀CSV檔案支援從OSS、HTTP、HDFS讀取CSV類型的檔案資料。本文為您介紹讀CSV檔案的參數配置。

使用限制

  • 通過可視化方式使用時,支援的計算資源為MaxCompute或Flink。

  • 通過PyAlink指令碼方式使用時,需要使用PyAlink指令碼組件進行代碼調用,詳情請參見PyAlink指令碼

前提條件

(可選)已完成OSS授權,詳情請參見雲產品依賴與授權:Designer

說明

檔案來源選擇OSS時,需要完成此操作。

組件配置

您可以通過以下任意一種方式,配置讀CSV檔案組件參數。

方式一:可視化方式

Designer工作流程頁面配置組件參數。

頁簽

參數名稱

描述

參數設定

檔案來源

支援OSS和OTHERS。

檔案路徑

讀取CSV檔案的路徑:

  • 檔案來源選擇OSS時,支援輸入或選擇OSS檔案路徑,對於1 GB以內的單檔案,支援在選擇控制項中直接上傳至指定的OSS路徑。

  • 檔案來源選擇OTHERS時,支援輸入HTTP或HDFS類型的檔案地址。

Schema

配置每一列對應的資料類型,格式為colname0 coltype0, colname1 coltype1,colname2 coltype2...。例如:f0 string,f1 bigint,f2 double

重要

配置的資料類型需要與CSV檔案每一列的資料類型保持一致,否則該列內容會讀取失敗。

欄位分隔符號

欄位的分隔字元,預設為半形逗號(,)。

處理無效值的方法

解析Tensor、Vector和MTable類型的資料失敗時,處理無效資料的方法。它們是Alink演算法架構所定義的資料類型,有固定的解析格式。處理無效值的方法取值如下:

  • ERROR:解析失敗時,運行中止。

  • SKIP:解析失敗時,跳過該資料。

是否忽略第一行資料

是否忽略第一行的資料,當CSV檔案首行為表頭資訊時,需要勾選此參數。

是否容錯

輸入資料與Schema中定義的不一致時,例如類型不一致或列數不一致的容錯方法:

  • 開啟是否容錯開關:當解析失敗時,丟棄該行資料。

  • 關閉是否容錯開關:當解析失敗時,運行終止,並列印出錯行。

引號字元

預設為半形雙引號(")。

行分隔字元

預設為分行符號(\n)。

是否忽略空行

是否忽略空行。

執行調優

節點個數

節點個數,與參數單個節點記憶體大小配對使用,正整數。範圍[1, 9999]。

單個節點記憶體大小,單位M

單個節點記憶體大小,單位MB,正整數。範圍[1024, 64*1024]。

方式二:PyAlink指令碼方式

使用PyAlink指令碼方式,配置該組件參數。您可以使用PyAlink指令碼組件進行Python代碼調用,組件詳情請參見PyAlink指令碼

參數名稱

是否必選

描述

預設值

schemaStr

格式為colname0 coltype0[, colname1 coltype1[, ...]]。例如f0 string,f1 bigint,f2 double

filePath

檔案路徑。

fieldDelimiter

欄位分隔符號。

半形逗號(,)

handleInvalidMethod

解析Tensor、Vector和MTable類型的資料失敗時,處理無效資料的方法。它們是Alink演算法架構所定義的資料類型,有固定的解析格式。處理無效值的方法取值如下:

  • ERROR:解析失敗時,運行中止。

  • SKIP:解析失敗時,跳過該資料。

ERROR

ignoreFirstLine

是否忽略第一行的資料,當CSV檔案首行為表頭資訊時,需要將ignoreFirstLine設為True。

False

lenient

輸入資料的格式與Schema中定義的不一致時,例如類型不一致或列數不一致的容錯方法:

  • true:當解析失敗時,丟棄該行資料。

  • false:當解析失敗時,拋異常。

False

quoteString

引號字元。

半形雙引號(")

rowDelimiter

行分隔字元。

分行符號(\n)

skipBlankLine

是否忽略空行。

True

PyAlink代碼方式的使用樣本。

filePath = 'https://alink-test-data.oss-cn-hangzhou.aliyuncs.com/iris.csv'
schema = 'sepal_length double, sepal_width double, petal_length double, petal_width double, category string'
csvSource = CsvSourceBatchOp()\
    .setFilePath(filePath)\
    .setSchemaStr(schema)\
    .setFieldDelimiter(",")
BatchOperator.collectToDataframe(csvSource)