你好,
我的工作区运行程序将一个作业发送给一个子进程,该子进程从文件系统中获取文件并将它们压缩在一起。
这些文件被复制到一个临时位置,比如E:\ temp \_auto_zip_dataset_1549542585771_21996,但是在子进程完成压缩工作并将zip文件写入所需的输出位置之后,这些文件不会被清除。
你能不能建议一下如何确保临时位置不会用完?
谢谢,莫妮卡
我的fmetemp文件夹一直在增长。通过使用清除临时文件功能,我可以释放大约1GB的内存。然而,我的整个临时文件夹将近54GB。手动删除这些亚搏在线文件安全吗?我想当我重新启动机器的时候他们应该走了,但它们似乎还在。
FME社区,你亚搏国际在线官网好:
我们有一个用例来用大点云数据集制作小块,并将这些小块上传到Azure Blob存储中。当它在本地工作时,我们希望将此工作区发布到FME服务器。
azureBlobUploader需要属性值或文件路径。一种解决方案是使用从以前的转换器创建的临时文件路径作为输入文件路径属性(例如“…\appdata\local\temp\wb-cache-azure\blob-upload-r10040\main\u stringconcatenator-1 52 fo 0 output 0 4acde95f2a8d5665e616291d87184930d8dc9_6.fps”)。有没有一种方法可以从例如在FME属性中自动获取StringConcatenator转换器中的这些临时文件路径,以便直接将其使用到AzureBlobUploader中?我研究了TempPathnameCreator变压器,但是,据我所见,这个转换器不会将转换器的输出写入给定的临时文件路径。
我对你的解决办法很好奇。
亲切的问候,
1月
在FME Server UI上的系统清理中,您可以设置任务do删除文件(在源文件夹中)的时间超过某个值。
它是否删除给定源文件夹中的所有子文件夹?
尽管FME提供近500种不同的变压器,在某些情况下,用户可能希望对其数据应用特定的ArcGIS地理处理工具。使用FME的PythonCaller转换器中的ArcPy,工作区作者可以将这样的工具直接合并到他们的FME工作流中,亚搏在线有效地扩展了FME的地理处理能力。
然而,ArcPy特征和FME特征有非常不同的结构,使用FME的逐特性基础将ArcPy工具应用于数据是一项相当复杂的任务。
所以,而不是试图将数据从一个结构转换到另一个结构,我们推荐的方法是:
在本例中,我们将在一组输入多边形上使用ArcGIS溶解工具。
注:功能性本文中提到的需要ArcGIS的授权版本安装在与FME相同的计算机上。
源数据:data.zip
示例工作区:arcpy-example.fmw
源数据集是一组分区多边形,我们希望在公共分区类别的基础上分解这些多边形。
输入
输出
为此,我们将使用Arcpy溶解工具(文档)。
完成的工作空间将整个过程包装成一个FME自定义变压器:
这创建了一个通用的解决方案,例如,用户可以更容易地选择要分解的功能组的属性。
在自定义变压器内部,必须执行许多步骤来准备用于地理处理的数据。
第一步是将特性类型(层/表名)更改为一致的。在这种情况下,我们使用AttributeCreator用一个称为“预分解”的特性类型值来标记每个特性:
这将是在临时地理数据库中创建的表的名称。
下一步是为此数据创建一个临时文件位置。一个名为temppathnamecreator的特殊转换器用于创建临时位置。然而,因为我们只希望生成一个位置,我们首先用一个采样器将一个特性从其余特性中分离出来,然后将这个特性发送给temppathnamecreator。
然后使用VariableSetter和VariableRetriever将临时位置复制到所有其他特性。
NB:TempPathnameCreator创建的临时文件夹将在工作区完成时自动清理,删除您在其中编写的所有文件。因为我们要在里面放一个完整的地理数据库文件夹,这很有用。
创建临时地理数据库所需的最后一步是创建模式。要做到这一点,采样的特征是通过一个FME集线器变压器称为SchemaSetter。
创建模式之后,所有功能都会发送到FeatureWriter,将它们写入临时地理数据库:
注意,临时路径名用于定义要写入的位置,fme_feature_type用于定义表名。还要注意,应用了动态模式定义设置,源架构(“来自架构的架构功能”)来自架构设置器转换器创建的架构。
NB:使用动态模式是我们生成可用于任何源数据的通用解决方案的另一种方法。
在开始ArcGIS地理处理之前,还需要两台变压器。创建地理数据库之后,FeatureWriter输出一个摘要特性,其中包含作为属性的输出数据集位置。因为(在Windows电脑上)这是一个前斜杠和后斜杠的组合,使用StringReplacer转换器清理路径。
最后,使用参数蚀刻器转换器来检索要分解的属性列表,从用户参数'Group By'中提取它。
PythonCaller转换器执行ArcPy处理。代码如下:
导入fmeimport fmeobjectsimport arcpy def processfeature(feature):从feature attributes dataset=feature.getattribute(‘‘数据集’)solvefields=feature.getattribute(‘‘组’’attrs’).split(‘,’)arcpy.env.workspace=dataset设置局部变量inferiatures=“pre溶解”outfeatureclass=dataset+“/dissolved”使用分组依据属性作为溶解字段执行溶解arcpy.dissolve_管理(感染,排水设施等级,dissolveFields,““MULTI_PART”,“DISSOLVE_LINES”)
此代码从fme属性(feature.getattribute函数)中获取有关数据集的信息,然后使用该信息执行arcpy溶解工具。
一旦Python脚本的工作完成,溶解完毕,要将这些特性恢复到FME工作区,需要一个FeatureReader转换器。触发Python脚本的摘要特性用作输入,通过属性提供源地理数据库位置。
我们在要读取的要素类型中指定了已分解的要素类,这样就不会同时读取原始要素类。清理完临时属性后,溶解特征由变压器输出。
同样的过程可以用于任何一次处理整个要素类的arcpy要素处理。
如果ARCGIS与FME在同一台计算机上可用,它的地理处理工具可以通过使用PythonCaller来扩展FME的功能,特写和特写。
FME 2017,从两个csv: X:\Folder\MyZIP_*.zip\Data\*_AA.csv读取1,000万条记录,X:\Folder\ MyZIP_*.zip\Data\* _BB.csv
有一段时间效果不错,然后突然停止工作。
我试着确保我不在Windows资源管理器的Zip文件中,重启,清除临时文件,但什么也没有解决问题。所以我查看了一下FME_TEMP,发现还有一些文件和文件夹。关闭FME后,删除了FME_TEMP的大部分内容(保留了一些FMXs)。在那之后,工作区再次开始工作!我想知道问题是否出在一个名为FME_TempFileStore的文件夹上,这个文件夹太大了,无法放入回收站。
因此,似乎清除临时文件并不能清除所有内容。我不确定这是一个bug还是故意的行为,但我想如果你发现某些东西毫无理由地停止了工作,我将分享这个技巧。显然,从FME_TEMP中删除内容时需要格外小心,尤其是在生产环境中。
几天前,我们清理了FME_TEMP env变量目录,因为那里有大约80GB的文件。我现在无法使用批量部署选项并在日志中获取以下内容:
开始翻译…无法打开“e:/local processing/fme_temp/fme_1480515564385_17256”:在执行打开从withinset superbatchfile[打开$superbatchfilename“w”]调用的$superbatchfilename“w”时没有此类文件或目录(文件“c:/users/william.allen/appdata/local/temp/5/fme-batch-deploy-f14892.tcl”行14)
清除临时文件并没有什么区别——创建一个空白文件/文件夹也没有区别。
我需要更改临时目录吗?您知道如何避免这种情况吗?
我已经设置了一个临时文件位置,使用此处的说明:https://knowledge.safe.com/articles/176/fme-te亚搏在线mp-environment-variable.html
然而,当我运行一个工作区,数据进入检查器时,FME数据检查器窗口打开,但没有数据加载/显示。
我可以看到数据已经很好地进入了FME临时空间,写文件很好,只是数据检查器。
有谁知道我该怎么纠正吗?
谢谢!
你好,
我正在从URL下载数据,这里是excel电子表格,我希望能够下载然后在同一个工作台中读取文件。我在工作台的第一部分中发现了url,所以一开始我并不知道它。
我可以使用httpcaller将文件放入属性中,但是要打开它,我想我必须使用属性文件编写器对文件进行物理表示,在使用特性阅读器读取该临时文件之前。
其工作原理,但是我想知道是否可以跳过临时文件阶段?
我试过在FeatureReader Transformer中使用下载URL,但是我认为下载是在猜测文件编码,并且弄错了——选择mime -binary而不是unicode。我看不出有什么方法可以告诉featurereader在获取url响应时使用什么类型的编码。
或者它们是直接从属性读取文件而不是将其写出来的另一种方法?
任何帮助表示赞赏。
fme使用temp dir,要存储完整的检查文件,过了一段时间,FME留下了数百个文件,直到您的磁盘上没有空间了。
为什么FME没有清理它在我翻译期间创建的临时文件?
如果FME没有干净地关闭,临时文件将不会被清理。当用户在工具栏上使用适当的“停止翻译”来停止翻译时,或者当工作区运行到自动完成时,就会发生“干净”关机。“不干净”关机的例子是当FME崩溃时,或者工作台在转换过程中被用户关闭。
FME可以创建相当大的临时文件。如果您怀疑存在临时文件,请使用工具>清除临时文件。
您可能想要通过设置FME_TEMP目录中。