主要内容

이번역페이지는최신내용을담고있지않습니다。최신내용을문으로보려면여기를클릭하십시오。

fileDatastore

사용자지정파일리더를사용하는데이터저장소

설명

메모리에맞지않을수있는대규모사용자지정형식파일모음을관리해야하거나대용량사용자지정형식파일이메모리에맞지않을때FileDatastore객체를사용합니다。fileDatastore함수를사용하여FileDatastore객체를만들고그속성을지정한다음,객체함수를사용하여데이터를가져오고처리할수있습니다。

생성

설명

fds= fileDatastore (位置“ReadFcn”,@fcn位置으로지정된파일모음에서데이터저장소를만들고함수fcn을사용하여이파일의데이터를읽습니다。

예제

fds= fileDatastore (位置“ReadFcn”,@fcn名称,值은하나이상의이름-값쌍의通讯录수를사용하여fds에대한추가파라미터와속성을지정합니다。예를들어,fileDatastore(位置、“ReadFcn @customreader“FileExtensions”(“开头”、“.extx”))를사용하여확장자에따라데이터저장소에포함할파일을지정할수있습니다。

입력marketing수

모두 확장

데이터저장소에포함할파일또는폴더로,文件集객체,파일경로또는DsFileSet객체로지정됩니다。

  • 文件集객체-位置文件集객체로지정할수있습니다。위치를文件集객체로지정하면경로나DsFileSet객체로지정하는경우보다데이터저장소생성시간이빨라집니다。자세한내용은matlab.io.datastore.FileSet항목을참조하십시오。

  • 파일경로——문자형벡터나字符串형스칼라로하나의파일경로를지정할수있습니다。여러개의파일경로는문자형벡터로구성된셀형배열또는字符串형배열로지정하면됩니다。

  • DsFileSet객체-DsFileSet객체를지정할수있습니다。자세한내용은matlab.io.datastore.DsFileSet을참조하십시오。

파일이나폴더는로컬또는원격이될수있습니다。

  • 로컬파일또는폴더-파일또는폴더의로컬경로를지정합니다。파일이현재폴더에없는경우전체경로나상대경로를지정합니다。지정된폴더의하위폴더내에있는파일은데이터저장소에자동으로포함되지않습니다。로컬경로를지정할때에는와일드카드문자(*)를사용할수있습니다。이문자는모든일치하는파일또는일치하는폴더의모든파일을데이터저장소에포함하도록지정합니다。

  • 원격파일또는폴더-hdfs: / / /path_to_file형식의URL(统一资源定位器)을사용하여원격파일또는폴더의전체경로로지정합니다。자세한내용은원격데이터로작업하기항목을참조하십시오。

폴더를지정하면데이터저장소는지원되는파일형식의파일만포함하며그외다른형식의파일은무시합니다。데이터저장소에포함할파일확장자목록을사용자지정하려면FileExtensions속성을참조하십시오。

예:“file1.ext”

예:“. . / dir /数据/ file1.ext”

예:{“C: \ dir \ data \ file1.exts”,“C: \ dir \ data \ file2.extx”}

예:“C: \ dir \ data \ * . ext "

파일데이터를읽는함수로,함수핸들로지정됩니다。

함수 핸들@fcn으로@ @현되는함수의시그니처는지정된ReadMode의값에따라달라집니다。파일데이터를읽는함수는다음시그니처중하나에해당해야합니다。

ReadMode

ReadFcn시그니처

“文件”(디폴트값)

이함수는다음과같은시그니처를가져야합니다。

函数data = MyReadFcn(文件名)…结束

文件名-읽을파일의이름。

数据-해당하는파일데이터。

“partialfile”

이함수는다음과같은시그니처를가져야합니다。

function [data,userdata,done] = MyReadFcn(filename,userdata)…结束

用户数据- - - - - -FileDatastore읽기를여러번호출하는사이에도데이터가유지되도록用户数据의필드를설정하고읽습니다。

完成- - - - - -이逻辑化学式수를真正的또는로설정합니다。

  • -계속해서현재파일을읽습니다。

  • 真正的-현재파일읽기를종료하고다음파일을읽습니다。

数据-파일데이터의일부입니다。

“字节”

이함수는다음과같은시그니처를가져야합니다。

函数data = MyReadFcn(文件名,偏移量,大小)…结束

抵消-파일의첫번째바이트에서시작하는바이트오프셋을지정합니다。

大小-현재읽기작업에서읽을바이트수를지정합니다。

数据- - - - - -BlockSize에지정된크기의파일데이터부분입니다。

FileDatastoreBlockSize에지정된값에따라抵消입력값과大小입력값을가시킵니다。

@fcn에지정된값은ReadFcn속성의값을설정합니다。

예:@customreader

데이터형:function_handle

이름-값通讯录수

선택적으로名称,值수가쉼로구분되어지정됩니다。여기서的名字은수이름이고价值는대응값입니다。的名字은따옴。Name1, Value1,…,的家과같이여러개의이름-값쌍의通讯录수를어떤순서로든지정할수있습니다。

예:fds = fileDatastore(“C: \ dir \数据”,“FileExtensions”{“开头”、“.extx”})

하위폴더포함플래그로,“IncludeSubfolders”와 함께真正的, 0, 1중하나가쉼。각폴더내에있는모든파일과하위폴더를포함하려면真正的를지정하고,각폴더내에있는파일만포함하려면를지정하십시오。

“IncludeSubfolders”를지정하지않은경우디폴트값은입니다。

예:“IncludeSubfolders”,真的

데이터형:逻辑|

사용자지정형식의파일확장자로,“FileExtensions”와함께문자형벡터,문자형벡터로구성된셀형배열,字符串형스칼라또는字符串형배열이쉼표로구분되어지정됩니다。

파일확장자를지정하면fileDatastore함수는지정된확장자를갖는파일에대해서만数据存储객체를만듭니다。“FileExtensions”를빈문자형벡터''로지정하여확장자가없는파일에대한데이터저장소를만들수도있습니다。“FileExtensions”를지정하지않으면fileDatastore가폴더내모든파일을자동으로포함합니다。

예:“FileExtensions”、“

예:“FileExtensions”、“开头”

예:“FileExtensions”(“开头”、“.extx”)

데이터형:字符|细胞|字符串

입력데이터를미리보기하는함수로,함수핸들로지정됩니다。

미리보기함수를지정하지않을경우FileDatastore@ReadFcn에지정된값을디폴트미리보기함수로사용합니다。또는데이터에적용할사용자지정미리보기함수를지정할수도있습니다。

  • @ReadFcn(디폴트값)-ReadFcn을사용하여FileDatastore데이터를샘플링합니다。이옵션을사용하면생성이느려질수있습니다。

  • 函数处理- - - - - -FileDatastore생성에사용자지정미리보기함수를사용하여입력데이터를샘플링합니다。미리보기와高생성을위해입력데이터에서필요한최소한의부분만을읽는함수를제공하려면PreviewFcn을사용합니다。

PreviewFcn에의해지정된함수는ReadFcn이반환하는값의데이터형과동일한데이터형으로값을반환해야합니다。

데이터형:function_handle

파일에서읽을부분으로,“文件”“partialfile”또는“字节”로지정됩니다。

“文件”(디폴트값)

ReadFcn에지정된사용자지정함수가한번의읽기작업에서전체파일을읽는경우읽기모드“文件”을사용합니다。

파일데이터저장소는사용자지정된읽기함수에따라가호출될때마다전체파일을읽습니다。병렬화단위는한파일전체입니다。

“partialfile”

ReadFcn에지정된사용자지정파일읽기함수가각읽기작업마다파일의일부분만읽는경우읽기모드“partialfile”을사용합니다。

파일데이터저장소는사용자지정된읽기함수에따라함수가호출될때마다파일의일부분만읽습니다。

“partialfile”읽기모드에서병렬화단위는한파일전체입니다。한파일전체를읽으려면복수의작업을직렬로수행해야합니다。

“字节”

ReadFcn에지정된사용자지정함수가각읽기작업마다BlockSize크기만큼파일일부분을읽는경우읽기모드“字节”를사용합니다。

FileDatastore는병렬화단위를BlockSize로지정된바이트수를포함하는파일블록으로설정합니다。

파일데이터저장소는사용자지정된읽기함수에따라읽기함수가호출될때마다BlockSize크기만큼파일일부분을읽습니다。한파일전체를읽으려면복수의작업을병렬로수행해야합니다。

FileDatastore객체에子集洗牌함수를사용하려면“ReadMode”“文件”로설정해야합니다。

데이터형:字符|字符串

작업시읽을바이트수로,양의정수로지정됩니다。

한파일의여러블록을복수의병렬matlab®워커에분산하려면BlockSize131072바이트(128킬로바이트)보다큰양의정수로지정하십시오。

BlockSize의값을지정하거나변경하려면먼저ReadMode“字节”로설정해야합니다。FileDatastoreReadMode에지정된값에따라BlockSize의디폴트값을설정합니다。

  • ReadMode“文件”또는“partialfile”이면FileDatastoreBlockSize의디폴트값을로설정합니다。

  • ReadMode“字节”이면FileDatastoreBlockSize의디폴트값을128메가바이트로설정합니다。

파일시스템루트경로의대체경로로,“AlternateFileSystemRoots”와함께字符串형벡터또는셀형배열로구성된이름-값v3수로지정됩니다。로컬컴퓨터에데이터저장소를만들지만다른컴퓨터(다른운영체제의컴퓨터일수있음)의데이터에액세스하고이를처리해야하는경우“AlternateFileSystemRoots”를사용합니다。또한并行计算工具箱™와MATLAB并行服务器를사용하여데이터를처리하고,처리한데이터를다른플랫폼클라우드또는다른클러스터컴퓨터에있는데이터의복사본과함께로컬컴퓨터에저장할경우“AlternateFileSystemRoots”를사용하여루트경로를연결해야합니다。

  • 실질적으로서로동일한루트경로들의집합을연결하려면“AlternateFileSystemRoots”를字符串형벡터로지정하십시오。예를들면다음과같습니다。

    [" Z: \数据集”、“/ mynetwork /数据集”)

  • 데이터저장소에대한실질적으로동일한여러루트경로의집합을여러개연결하려면“AlternateFileSystemRoots”를여러행이포함된셀형배열로지정하십시오。여기서각행은실질적으로동일한루트경로들의집합하나를나타냅니다。셀형배열의각행을字符串형벡터또는문자형벡터로구성된셀형배열로지정합니다。예를들면다음과같습니다。

    • “AlternateFileSystemRoots”를字符串형벡터로구성된셀형배열로지정합니다。

      {[Z: \“数据集”、“/ mynetwork /数据集”);…[" Y: \数据集”、“/ mynetwork2 /数据集”、“年代:\数据集”)}

    • 또는“AlternateFileSystemRoots”를문자형벡터로구성된셀형배열로지정합니다。

      {{“Z: \数据集”、“mynetwork /数据集”},…{“Y: \数据集”,“mynetwork2 /数据集”,年代:\数据集的}}

“AlternateFileSystemRoots”의값은다음조건을충족해야합니다。

  • 하나이상의행을포함합니다。여기서각행은실질적으로동일한여러루트경로를지정합니다。

  • 각행은여러개의루트경로를지정하고,각루트경로는적어도두개의문자를포함해야합니다。

  • 루트경로는고유하며서로의하위폴더가아닙니다。

  • 파일의위치를가리키는적어도하나의루트경로항목을포함합니다。

자세한내용은为不同机器或集群上的处理设置数据存储항목을참조하십시오。

예:[" Z: \数据集”、“/ mynetwork /数据集”)

데이터형:字符串|细胞

속성

모두 확장

FileDatastore속성은FileDatastore객체와연결된파일을설명합니다。文件속성을제외하고,이름-값쌍의수를사용하여FileDatastore속성의값을지정할수있습니다。객체를만든후속성을보거나수정하려면점@ @기법을사용하십시오。

데이터저장소에포함된파일로,문자형벡터,문자형벡터로구성된셀형배열,字符串형스칼라또는字符串형배열로확인됩니다。여기서각문자형벡터또는字符串형은파일에대한전체경로입니다。데이터저장소를만들때fileDatastore함수와数据存储함수에지정되는位置수에따라文件가정의됩니다。

예:{“C: \ dir \ data \ file1.ext”;“C: \ dir \ data \ file2.ext”}

예:“hdfs: / / /数据/ * .mat”

데이터형:字符|细胞|字符串

이속성은읽기전용입니다。

데이터저장소를생성하는데사용된폴더로,문자형벡터로구성된셀형배열로반환됩니다。셀형배열은열벡터로방향이설정됩니다。각문자형벡터는데이터파일을포함하는폴더의경로입니다。데이터저장소를만들때fileDatastore함수와数据存储함수에지정되는位置수에따라文件夹가정의됩니다。

FileDatastore객체의文件속성을수정하면文件夹속성이재설정됩니다。

데이터형:细胞

파일데이터를읽는함수로,함수핸들로지정됩니다。

@fcn에의해지정된값은ReadFcn속성의값을설정합니다。

예:@MyCustomFileReader

데이터형:function_handle

이속성은읽기전용입니다。

세로로결합가능한지여부에대한플래그로,논리형真正的또는로지정됩니다。FileDatastore객체를처음만들때이속성의값을지정합니다。

真正的

FileDatastore객체를여러번읽는경우,세로로결합가능한균일데이터가반환됩니다。

UniformRead속성값이真正的일경우:

  • ReadFcn함수는세로로결합가능한데이터를반환해야하며,그러지않으면readall메서드는오류를반환합니다。

  • 함수의출력기본데이터형은ReadFcn의출력데이터형과동일합니다。

(디폴트값)

FileDatastore객체를여러번읽는경우,세로로결합가능한균일데이터가반환되지않습니다。

UniformRead속성값이일경우:

  • readall은셀형배열을반환합니다。

  • 은高형셀형배열을반환합니다。

예:fds = fileDatastore(location,"ReadFcn",@load,"UniformRead",true)

데이터형:逻辑|

이속성은읽기전용입니다。

쓰기가지원되는형식목록으로,字符串형으로구성된행벡터로반환됩니다。이 속성은writeall을사용하여데이터저장소에서출력파일을쓸때가능한출력형식을지정합니다。

데이터형:字符串

객체 함수

hasdata 데이터를읽을수있는지확
numpartitions 데이터저장소파티션개수
分区 데이터저장소파티셔닝
预览 데이터저장소에있는데이터의서브셋미리보기
데이터저장소의데이터읽어들이기
readall 데이터저장소의모든데이터읽기
writeall 将数据存储写入文件
重置 데이터저장소를초기상태로재설정
变换 变换数据存储
结合 여러데이터저장소의데이터결합
isPartitionable 确定数据存储是否可分区
isShuffleable 确定数据存储是否可洗牌
洗牌 데이터저장소의모든데이터읽기섞기
子集 创建数据存储或文件集的子集

예제

모두 축소

FileSet객체또는파일경로를사용하여fileDatastore객체를만듭니다。

FileSet객체를만듭니다。fileDatastore객체를만듭니다。

fs = matlab.io.datastore.FileSet(“airlinesmall.parquet”);fds = fileDatastore(fs,“ReadFcn”@load)
fds =FileDatastore属性:文件:{`…\matlab\toolbox\matlab\demos\airlinesmall。parquet'}文件夹:{'…\matlab\toolbox\matlab\demos `} UniformRead: 0 ReadMode: ` file ` BlockSize: Inf PreviewFcn: @loa金宝appd SupportedOutputFormats: ["txt" "csv" "xlsx" "xls" "parquet" "parq" "png" "jpg" "jpeg" "tif" "tiff" "wav" "flac" "ogg" "mp4" "m4a"] ReadFcn: @load AlternateFileSystemRoots: {}

또는파일경로를사용하여fileDatastore객체를만들수도있습니다。

fds = fileDatastore(“airlinesmall.parquet”“ReadFcn”, @load);

MATLAB®演示폴더내모든.mat파일을포함하는데이터저장소를만들어,负载함수를통해파일데이터를읽도록지정합니다。

fds = fileDatastore(fullfile(matlabroot,“工具箱”“matlab”“演示”),“ReadFcn”@load,“FileExtensions”“.mat”
fds =FileDatastore属性:文件:{'…\matlab\toolbox\matlab\demos\accidents.mat';’……\ matlab \ matlab工具箱\ \ demo \ airfoil.mat”;“……\ matlab \ matlab工具箱\ \ demo \ airlineResults。垫”……和38个}文件夹:{'…\matlab\toolbox\matlab\demos `} UniformRead: 0 ReadMode: ` file ` BlockSize: Inf PreviewFcn: @loa金宝appd SupportedOutputFormats: ["txt" "csv" "xlsx" "xls" "parquet" "parq" "png" "jpg" "jpeg" "tif" "tiff" "wav" "flac" "ogg" "mp4" "m4a"] ReadFcn: @load AlternateFileSystemRoots: {}

데이터저장소의첫번째파일을읽은후두번째파일을읽습니다。

Data1 = read(fds);Data2 = read(fds);

데이터저장소의모든파일을동시에읽습니다。

readall (fds);

데이터와카운터를유지할셀형배열을초기화합니다。

dataarray = cell(数字(fds.Files), 1);I = 1;

데이터저장소를첫번째파일로재설정하고남아있는데이터가없을때까지한번에하나씩파일을읽습니다。배열dataarray에데이터를할당합니다。

重置(fds);Hasdata (fds) dataarray{i} = read(fds);I = I +1;结束

메모리에맞지않을수있는대용량垫파일에서읽기위해데이터저장소를만들수있습니다。대용량垫파일의각배열이사용가능한메모리에맞는다고가정하고,다음과같은3단계를통해데이터를읽고처리하기위해데이터저장소를만듭니다。

  1. Mat파일에서배열을한번에하나씩읽는사용자지정읽기함수를작성합니다。

  2. 부분읽기를수행하도록데이터저장소함수의파라미터를설정합니다。

  3. Mat파일에서배열을한번에하나씩읽습니다。

Mat파일에서배열을한번에하나씩읽는사용자지정함수를작성합니다。이 함수는FileDatastore@ReadFcn수에설명되어있는것처럼시그니처를가져야합니다。이파일을작업폴더나matlab경로에있는폴더에저장합니다。이예제에서는다음과같은사용자지정함수load_variable을사용합니다。

类型load_variable.m
function [data,variables,done] = load_variable(filename,variables) %如果变量列表为空,%从文件中创建变量列表If isempty(variables)变量= who('-file', filename);从变量列表中加载变量data = Load(文件名,变量{1});从变量列表中删除新读取的变量(1)= [];如果该文件已读取,则转移到下一个文件。Done = isempty(变量);结束

accidents.mat를포함하는FileDatastore를생성하고설정합니다。“partialfile”을읽기모드로사용하고load_variable을사용자지정읽기함수로사용하도록데이터저장소파라미터를지정합니다。

fds = fileDatastore(“accidents.mat”“ReadMode”“partialfile”“ReadFcn”, @load_variable);

데이터저장소를사용하여파일에서처음3개의변수를읽어들입니다。파일accidents.mat는9개의변수를포함하고있으며가한번호출될때마다한개의변수가반환됩니다。따라서처음3개의변수를가져오려면읽기함수를세번호출합니다。

Data = read(fds)
data =带字段的结构:数据来源:{3x1 cell}
Data = read(fds)
data =带字段的结构:hwycols: 17
Data = read(fds)
data =带字段的结构:Hwydata: [51x17 double]

샘플 파일accidents.mat는작고메모리에맞지만,메모리에맞지않는대용량垫파일에대해서도비슷한결과를예상할수있습니다。

  • FileDatastore객체에子集洗牌함수를사용하려면“ReadMode”“文件”로설정해야합니다。

버전 내역

R2016a에개발됨