主要内容

将分布式数据写入输出位置

描述

例子

写(位置D写入分布式数组中的值D到文件夹中的文件位置.数据以适合回读的高效二进制格式存储数据存储(位置).如果不是沿第一个维度分布,MATLAB®在写入之前重新分配数据,以便使用数据存储

例子

写(filepatternD使用文件扩展名fromfilepattern来确定输出格式。filepattern必须包含要写入文件的文件夹,后面跟着包含通配符的文件名.例如,通配符表示用于生成惟一文件名的增量数字写(文件夹/ myfile_ * . csv, D)

例子

写(___名称,值使用任何前面的语法指定带有一个或多个名称-值对参数的其他选项。例如,您可以用“文件类型”和有效的文件类型(“垫”“>”“铺”“文本”,或“表格”),或者可以指定一个自定义写函数来处理数据“WriteFcn”和一个函数句柄。

例子

全部折叠

此示例演示如何将分布式数组写入文件系统,然后使用数据存储将其读取回来。

创建分布式数组并将其写入输出文件夹。

d = distributed.rand (5000 1);位置=hdfs: / / myHadoopCluster /一些/输出/文件夹”;写(位置,d);

从写入的文件重新创建分布式数组。

ds =数据存储(位置);d1 =分布式(ds);

这个例子展示了如何使用文件模式将分布式数组写入不同的格式。

创建一个分布式表,并将其写入许多应用程序都能读取的基于文本的简单格式。

分布式(dt = array2table (rand (5000 3)));位置=“/ tmp / CSVData / dt_ * . csv”;写(位置,dt);

从写入的文件重新创建分布式表。

ds =数据存储(位置);dt₁=分布式(ds);

您可以写入分布式数据并将其作为高数据读取回来,反之亦然。

创建分布式时间表并将其写入磁盘。

分布式(dt = array2table (rand (5000 3)));位置=“/ tmp / CSVData / dt_ * . csv”;写(位置,dt);

用写好的文件做一张高桌子。

ds =数据存储(位置);tt =高(ds);

或者,也可以将写入高数据的数据读入分布式数据。创建一个高时间表,并将其写入磁盘。

tt =高(array2table (rand (5000 3)));位置=“/ tmp / CSVData / dt_ * . csv”;写(位置、tt);

读一读分布式时间表。

ds =数据存储(位置);dt =分布式(ds);

此示例演示如何使用自定义写函数将分布式数组写入文件系统。

创建一个简单的写函数,写出电子表格文件。

函数dataWriter(info, data) filename = info. proposstedfilename;writetable(数据、文件名“文件类型”“表格”);结束

创建分布式表,并使用自定义写入功能将其写入磁盘。

分布式(dt = array2table (rand (5000 3)));位置=“/ tmp / MyData / tt_ * .xlsx”;写(位置,dt,“WriteFcn”, @dataWriter);

输入参数

全部折叠

写入数据的文件夹位置,指定为字符向量或字符串。位置可以指定完整路径或相对路径。指定的文件夹可以是以下选项之一:

  • 现有空文件夹,不包含其他文件

  • 新文件夹创建

您可以将数据写入计算机上的本地文件夹、共享网络上的文件夹或远程位置,例如Amazon S3™、Windows Azure®存储Blob,或Hadoop®分布式文件系统。有关将数据读写到远程位置的详细信息,请参见使用远程数据

例子:位置 = '../../ dir /数据的指定相对文件路径。

例子:位置= ' C: \ \用户桌面的名字\ \数据”指定Windows的绝对路径®桌面文件夹。

例子:位置= '文件:/ / /道路/ /数据的指定文件夹的绝对URI路径。

例子:位置= ' hdfs: / / myHadoopCluster /一些/输出/文件夹”HDFS URL。

例子:位置= ' s3: / / bucketname /一些/输出/文件夹”指定Amazon S3的位置。

数据类型:字符|字符串

输入数组,指定为分布式数组。

文件命名模式,指定为字符串或字符向量。文件命名模式必须包含一个要将文件写入其中的文件夹,后跟一个包含通配符的文件名将通配符替换为连续编号以确保文件名的唯一性。

例子:写(“文件夹/ data_ * . txt”,D)写入分布式数组D作为一系列的. txt文件文件夹用文件名data_1.txtdata_2.txt,等等。

数据类型:字符|字符串

名称-值参数

指定可选参数对为Name1 = Value1,…,以=家,在那里的名字参数名称和价值对应的值。名-值参数必须出现在其他参数之后,但对的顺序并不重要。

在R2021a之前,名称和值之间用逗号隔开,并括起来的名字在报价。

例子:write('C:\myData', D, 'FileType', 'text', 'WriteVariableNames', false)写入分布式数组DC: \ myData作为不使用变量名作为列标题的文本文件的集合。

一般选择

全部折叠

文件类型,指定为逗号分隔的对,由“文件类型”和允许的文件类型之一:“汽车”“垫”“铺”“>”“文本”,或“表格”

使用“文件类型”的名称-值对位置参数指定要写入的文件类型。默认情况下,尝试自动检测正确的文件类型。不需要指定“文件类型”名称-值对参数if可以从扩展名中确定文件类型位置filepattern参数。可以从这些扩展名确定文件类型:

  • .matfor MATLAB数据文件

  • .parquet.parq镶木地板文件

  • .seq序列文件

  • . txt.dat,或. csv对于分隔的文本文件

  • xls.xlsx.xlsb.xlsm.xltx,或.xltm电子表格文件

例子:write('C:\myData', D, 'FileType', 'text')

自定义写入函数,指定为逗号分隔的对,由“WriteFcn”和一个函数句柄。指定的函数接收来自的数据块D并负责创建输出文件。您可以使用“WriteFcn”参数以各种格式写入数据,即使输出格式不直接支持万博1manbetx

函数签名

自定义写入函数必须接受两个输入参数,信息而且数据

函数myWriter(信息,数据)

  • 数据包含来自的数据块D

  • 信息是一个结构,其字段包含关于数据块的信息。您可以使用这些字段来构建在最终位置内全局唯一的新文件名。结构字段为:

    描述
    RequiredLocation 临时输出文件夹的完全限定路径。所有输出文件都必须写入此文件夹。
    RequiredFilePattern 输出文件名所需的文件模式。如果只指定文件夹名,则此字段为空。
    SuggestedFilename 满足位置和命名要求的完全限定的全局惟一文件名。
    PartitionIndex 正在写入的分布式阵列分区的索引。
    NumPartitions 分布式阵列中的分区总数。
    BlockIndexInPartition 当前数据块在分区中的位置。
    IsFinalBlock 真正的如果当前块是分区的最后一个块。

文件命名

用于输出文件的文件名决定了稍后读取文件的顺序数据存储.如果文件的顺序很重要,那么最佳实践是使用SuggestedFilename字段来命名文件,因为建议的名称保证了文件的顺序。如果不使用建议的文件名,则自定义写入功能必须创建全局惟一的、顺序正确的文件名。文件名应该遵循中列出的命名模式RequiredFilePattern.文件名称必须是唯一的,并且在worker之间的顺序必须正确,即使每个worker都写入自己的本地文件夹。

多分区阵列

分布式阵列被划分为多个分区,以便与并行计算工具箱™并行地在阵列上运行计算。在编写分布式数组时,每个分区都被划分为更小的块。

信息包含几个与分区相关的字段:PartitionIndexNumPartitionsBlockIndexInPartition,IsFinalBlock.当您写出一个文件并向其追加内容时,这些字段非常有用,对于具有大分区且被分割为许多块的数组来说,这是一项常见任务。每个块调用一次自定义写入函数,一个分区中的块总是在一个worker上按顺序写入。但是,不同的分区可以由不同的工作人员编写。

例子函数

一个简单的写出电子表格文件的函数是:

函数dataWriter(info, data) filename = info. proposstedfilename;writetable(数据、文件名“文件类型”“表格”结束
调用dataWriter作为一些数据的写入函数D,使用以下命令:
分布式(D = array2table (rand (5000 3)));位置=“/ tmp / MyData / D_ * .xlsx”;写(位置、维“WriteFcn”, @dataWriter);
对于每个块,dataWriter函数中使用建议的文件名信息结构和调用writetable写出一个电子表格文件。方法中指定的文件命名模式将被考虑在内位置论点。

数据类型:function_handle

文本或电子表格文件

全部折叠

指示符,用于将变量名写入列标题,指定为逗号分隔的对,由“WriteVariableNames”和一个数字或逻辑1真正的)或0).

指示器

行为

真正的

变量名包含在输出的列标题中。这是默认的行为。

变量名不包含在输出中。

用于书写日期的地区,指定为逗号分隔的对,由“DateLocale”一个字符向量或者一个字符串标量。当你写datetime值到文件中,使用DateLocale指定区域设置应写出月份和星期的名称和缩写。字符向量或字符串采用以下形式xx_YY,在那里xx是ISO 639-1两个字母的小写代码,表示一种语言,和YY是一个大写的ISO 3166-1 alpha-2代码,表示一个国家。有关区域设置的公共值列表,请参阅语言环境的名称-值对参数datetime函数。

为Excel®文件,写变量包含datetime数组作为Excel日期,并忽略“DateLocale”参数值。如果datetime变量包含1900年或1904年之前的年份将变量写入文本。有关Excel日期的更多信息,请参见Excel中1900年和1904年日期系统的区别

例子:“DateLocale”、“ja_JP”“DateLocale”、“ja_JP”

数据类型:字符|字符串

文本文件只

全部折叠

字段分隔符字符,指定为逗号分隔对,由“分隔符”其中一个指示符是:

说明符

字段分隔符

”、“

“逗号”

逗号。这是默认的行为。

' '

“空间”

空间

' \ t '

“标签”

选项卡

“;”

“半”

分号

“|”

“酒吧”

竖线

您可以使用“分隔符”名称-值对参数仅用于分隔的文本文件。

例子:“分隔符”、“空间”“分隔符”,“空间”

用于写入引用文本的指示符,指定为逗号分隔的一对,由“QuoteStrings”,要么真正的.如果“QuoteStrings”真正的,然后将文本括在双引号中,并用两个双引号字符替换该文本中出现的任何双引号字符。示例请参见将引用的文本写入CSV文件

您可以使用“QuoteStrings”名称-值对参数仅用于分隔的文本文件。

与文件关联的字符编码方案,指定为逗号分隔的对,由“编码”而且“系统”或者一个标准字符编码方案名称,如该表中的一个值。当您没有指定任何编码或将编码指定为“系统”,函数使用系统默认编码写入文件。

“繁体”

“iso - 8859 - 1”

“windows - 874”

“Big5-HKSCS”

“iso - 8859 - 2”

“windows - 949”

“CP949”

“iso - 8859 - 3”

“windows - 1250”

“EUC-KR”

“iso - 8859 - 4”

“windows - 1251”

“EUC-JP”

“iso - 8859 - 5”

“windows - 1252”

“EUC-TW”

“iso - 8859 - 6”

“windows - 1253”

“GB18030”

“iso - 8859 - 7”

“windows - 1254”

“GB2312”

“iso - 8859 - 8”

“windows - 1255”

“GBK”

“iso - 8859 - 9”

“windows - 1256”

“IBM866”

“iso - 8859 - 11”

“windows - 1257”

“KOI8-R”

“iso - 8859 - 13”

“windows - 1258”

“KOI8-U”

“iso - 8859 - 15”

“us - ascii”

“麦金塔”

“utf - 8”

“Shift_JIS”

例子:“编码”、“系统”“编码”,“系统”使用系统默认编码。

电子表格文件只

全部折叠

目标工作表,指定为逗号分隔的对,由“表”和包含工作表名称的字符向量或字符串标量,或指示工作表索引的正整数。工作表名称不能包含冒号().要确定电子表格文件中工作表的名称,请使用(地位、床单)= xlsfinfo(文件名)

如果表不存在,那么在工作表集合的末尾添加新工作表。如果工作表的索引大于工作表的数量,则追加空工作表,直到工作簿中的工作表数目等于工作表索引为止。在这两种情况下,生成一个警告,指示它已添加了一个新的工作表。

您可以使用“表”名称-值对参数仅用于电子表格文件。

例子:“表”2

例子:“表”“MySheetName”

数据类型:字符|字符串|||int8|int16|int32|int64|uint8|uint16|uint32|uint64

镶木地板文件只

全部折叠

拼花压缩算法,指定为这些值之一。

  • “时髦的”“brotli”“gzip”,或未压缩的.如果你指定一个压缩算法,那么使用相同的算法压缩所有变量。

  • 或者,您可以指定字符向量的单元格数组或包含每个变量使用的压缩算法名称的字符串向量。

一般来说,“时髦的”在读写方面有更好的表现,“gzip”以消耗更多的CPU处理时间为代价获得更高的压缩比,并且“brotli”通常以压缩速度为代价生成最小的文件大小。

例子:写(“C: \ myData”D“文件类型”,“铺”,“VariableCompression”,“brotli”)

例子:write('C:\myData', D, 'FileType', 'parquet', 'VariableCompression', {'brotli' 'snappy' 'gzip'})

编码方案名称,指定为以下值之一:

  • “汽车”- - - - - -使用“普通”对逻辑变量进行编码,和“字典”为所有其他人编码。

  • “字典”“普通”-如果你指定了一种编码方案,那么用该方案编码所有变量。

  • 或者,您可以指定字符向量的单元格数组或包含每个变量使用的编码方案名称的字符串向量。

一般来说,“字典”编码会使文件更小,但是“普通”对于不包含许多重复值的变量,编码可以更快。如果字典的大小或惟一值的数量增长得太大,那么编码将自动恢复到普通编码。有关Parquet编码的更多信息,请参见剧场正厅座位编码定义

例子:(“myData写。parquet', D, 'FileType', 'parquet', 'VariableEncoding', 'plain')

例子:(“myData写。parquet', D, 'FileType', 'parquet', 'VariableEncoding', {'plain' 'dictionary' 'plain'})

使用的拼花版本,指定为两者之一“1.0”“2.0”.默认情况下,“2.0”提供最有效的存储,但您可以选择“1.0”与支持Parquet格式的外部应用程序最广泛的兼容性。万博1manbetx

限制

在某些情况下,write(location, D, 'FileType', type)创建不表示原始数组的文件D完全正确。如果你使用数据存储(位置)要读取检查点文件,则结果的格式或内容可能与原始分布式表不相同。

“文本”而且“表格”文件类型,使用这些规则:

  • 使用以下命令输出数值变量longG格式、类别、字符或字符串变量作为不加引号的文本。

  • 对于有多个列的非文本变量,每行输出多个分隔符分隔的字段,并为文件的第一行构造合适的列标题。

  • 将具有两个以上维度的变量输出为二维变量,并将尾随维度折叠。

  • 对于cell-valued的变量,当内容为数字、逻辑、字符或类别时,输出每个单元格的内容为单行,包含多个分隔符分隔的字段,否则输出单个空字段。

请勿使用“文本”“表格”文件类型,如果您需要编写分布式阵列的精确检查点。

提示

  • 使用函数来创建检查点快照您的数据。这种做法允许您直接从磁盘上的文件重构分布式阵列,而不是重新执行生成分布式阵列的所有命令。

版本历史

介绍了R2017a