datacleaner第四部分,11、12、13、14章

第四部分,配置参考

第十一章。配置文件

文摘

在这一章里,我们通过一个配置文件的元素, conf.xml,这样就可以(虽然可选)改变DataCleaner的静态配置和配置环境。配置文件和相关的文件都存储在一个文件夹按照惯例 .datacleaner在用户的主目录。

DataCleaner监视web应用程序中,conf.xml文件是唯一的配置。该文件位于每个租户的存储库的根文件夹。存储库的更多信息,请参考章节。

在配置文件中大部分的元素也可编辑在桌面应用程序中。然而重要的是要注意,更改在GUI并不直接保存到配置文件,但到userpreferences.dat文件。您可以考虑两个文件之间的关系:配置文件定义了一个静态的,unmodifyable原型的应用程序环境。所有定制这个原型userpreferences保存在桌面应用程序。dat文件。

XML模式

配置文件(conf.xml)是一个XML文件的XML名称空间“http://eobjects.org/analyzerbeans/configuration/1.0”。

XML-savvy读者,他们更喜欢使用XML schema意识到自己编辑器来编辑XML文件,你可以在这里找到这个名称空间的XML模式:https://github.com/datacleaner/DataCleaner/blob/master/engine/xml-config/src/main/resources/configuration.xsd .

数据存储

数据存储在配置文件中可以配置在< datastore-catalog >元素。以下部分将进入进一步的细节与特定类型的数据存储。

数据库(JDBC)连接

这里有一些常见的数据库类型的例子。

提示

DataCleaner用户界面使其更容易找出url(连接字符串)和驱动程序类连接属性的一部分。这是一个好的开始,如果你不知道这些属性了。

MySQL

<jdbc-datastore name="MySQL datastore"> <url>jdbc:mysql://hostname:3306/database?defaultFetchSize=-2147483648</url> <driver>com.mysql.jdbc.Driver</driver> <username>username</username> <password>password</password> <multiple-connections>true</multiple-connections> </jdbc-datastore>

甲骨文

<jdbc-datastore name="Oracle datastore"> <url>jdbc:oracle:thin:@hostname:1521:sid</url> <driver>oracle.jdbc.OracleDriver</driver> <username>username</username> <password>password</password> <multiple-connections>true</multiple-connections> </jdbc-datastore>

Microsoft SQL Server

一个典型的连接到Microsoft SQL server将看起来像这样:

<jdbc-datastore name="MS SQL Server datastore"> <url>jdbc:jtds:sqlserver://hostname/database;useUnicode=true;characterEncoding=UTF-8</url> <driver>net.sourceforge.jtds.jdbc.Driver</driver> <username>username</username> <password>password</password> <multiple-connections>true</multiple-connections> </jdbc-datastore>

然而,如果你想使用一个实例名建立连接,然后浏览器服务必须运行SQL Server,然后你可以包括实例参数:这里有一个例子为连接到SQLEXPRESS实例:

<url>jdbc:jtds:sqlserver://hostname/database;instance=SQLEXPRESS;useUnicode=true;characterEncoding=UTF-8</url>

逗号分隔值(CSV)文件

这是一个CSV文件数据存储的一个例子

<csv-datastore name="my_csv_file"> <filename>/path/to/file.csv</filename> <quote-char>"</quote-char> <separator-char>;</separator-char> <encoding>UTF-8</encoding> <fail-on-inconsistencies>true</fail-on-inconsistencies> <header-line-number>1</header-line-number> </csv-datastore>

固定宽度值文件

文件使用固定宽度值可以以两种方式注册,要么用一个固定宽度大小对所有列,或个人value-widths。

这里有一个例子,对所有列固定宽度规格:

<fixed-width-datastore name="My file"> <filename>foobar.txt</filename> <width-specification> <fixed-value-width>20</fixed-value-width> </width-specification> <encoding>UTF-8</encoding> <fail-on-inconsistencies>true</fail-on-inconsistencies> </fixed-width-datastore>

这里有一个例子与个人(3列)宽度规格:

<fixed-width-datastore name="My file"> <filename>foobar.txt</filename> <width-specification> <value-width>4</value-width> <value-width>17</value-width> <value-width>19</value-width> </width-specification> <encoding>UTF-8</encoding> <fail-on-inconsistencies>true</fail-on-inconsistencies> </fixed-width-datastore>

Excel电子表格

这是一个Excel电子表格数据存储的例子

<excel-datastore name="my_excel_spreadsheet"> <filename>/path/to/file.xls</filename> </excel-datastore>

XML文件数据存储

定义XML数据存储都可以做一个简单的(自动映射)的方式,或一个先进的(和更多的性能和内存有效的方式)。

简单的方法是定义一个xml-datastore文件名,像这样:

<xml-datastore name="my_xml_datastore"> <filename>/path/to/file.xml</filename> </xml-datastore>

这种类型的XML数据存储工作找到当文件大小很小,层次结构不太复杂。它的缺点是,它试图自动检测表结构来表示XML内容相匹配(这是一个树结构,不是一个表)。

绕过这个问题您也可以定义您自己的表结构,你指定的xpath行和行中的值。这里有一个例子:

<xml-datastore name="my_xml_datastore"> <filename>/path/to/file.xml</filename> <table-def> <rowXpath>/greetings/greeting</rowXpath> <valueXpath>/greetings/greeting/how</valueXpath> <valueXpath>/greetings/greeting/what</valueXpath> </table-def> </xml-datastore>

数据存储定义了一个表,其中每个记录被定义为���素匹配XPath /问候问候。表有两列,所代表的“如何”,“什么”元素的子元素连续的路径。

更多细节的XPath表达式定义表的XML数据存储模式,请参考元模型对主题的教程(元模型是数据访问在DataCleaner库用于读取数据)。

ElasticSearch指数

这是ElasticSearch指数数据存储的一个例子

<elasticsearch-datastore name="my_elastic_search_index"> <hostname>localhost</hostname> <port>9300</port> <cluster-name>my_es_cluster</cluster-name> <index-name>my_index</index-name> </elasticsearch-datastore>

MongoDB数据库

这的一个例子是一个完全指定的MongoDB数据库,用一个示例表结构基于两个集合。

<mongodb-datastore name="my_mongodb_datastore"> <hostname>localhost</hostname> <port>27017</port> <database-name>my_database</database-name> <username>user</username> <password>pass</password> <table-def> <collection>company_collection</collection> <property> <name>company_name</name> <type>VARCHAR</type> </property> <property> <name>customer</name> <type>BOOLEAN</type> </property> <property> <name>num_employees</name> <type>INTEGER</type> </property> <property> <name>address_details</name> <type>MAP</type> </property> </table-def> <table-def> <collection>person_collection</collection> <property> <name>person_name</name> <type>VARCHAR</type> </property> <property> <name>birthdate</name> <type>DATE</type> </property> <property> <name>emails</name> <type>LIST</type> </property> </table-def> </mongodb-datastore>

如果主机名和端口元素排除,localhost:27017年将是假定。

如果用户名和密码元素,将一个匿名连接。

如果没有table-def元素,将检查数据库和表定义将自动根据第一每个收集的1000份文件。

CouchDB数据库

这是一个完全指定的CouchDB数据库,用一个例子基于两个CouchDB数据库的表结构。

<couchdb-datastore name="my_couchdb_datastore"> <hostname>localhost</hostname> <port>5984</port> <username>user</username> <password>pass</password> <ssl>true</ssl> <table-def> <database>company_collection</database> <field> <name>company_name</name> <type>VARCHAR</type> </field> <field> <name>customer</name> <type>BOOLEAN</type> </field> <field> <name>num_employees</name> <type>INTEGER</type> </field> <field> <name>address_details</name> <type>MAP</type> </field> </table-def> <table-def> <database>person_collection</database> <field> <name>person_name</name> <type>VARCHAR</type> </field> <field> <name>birthdate</name> <type>DATE</type> </field> <field> <name>emails</name> <type>LIST</type> </field> </table-def> </couchdb-datastore>

如果主机名和端口元素排除,localhost:5984年将是假定。

如果用户名和密码元素,将一个匿名连接。

如果“ssl”元素是错误或遗漏,将使用常规的HTTP连接。

如果没有table-def元素,将检查数据库和表定义将自动根据第一个1000文件的每个数据库。

综合数据存储

这是一个复合数据存储的一个例子。它包含数据从其他数据存储2:数据存储1和数据存储2。

<composite-datastore name="my composite"> <datastore-name>Datastore 1</datastore-name> <datastore-name>Datastore 2</datastore-name> </composite-datastore>

参考数据

参考数据项(字典、同义词目录和字符串模式)在配置文件中定义的< reference-data-catalog >元素。下面的一些例子:

字典

字典中存储在<字典>元素引用数据部分。三种类型的字典可以添加。

数据存储的字典

<reference-data-catalog> <dictionaries> ... <datastore-dictionary name="Lastnames" description="My datastore based dictionary"> <datastore-name>orderdb</datastore-name> <column-path>EMPLOYEES.LASTNAME</column-path> </datastore-dictionary> ... </dictionaries> </reference-data-catalog>

文本文件字典

<reference-data-catalog> <dictionaries> ... <text-file-dictionary name="Firstnames" description="My file based dictionary"> <filename>/path/to/first.txt</filename> <encoding>UTF-8</encoding> </text-file-dictionary> ... </dictionaries> </reference-data-catalog>

值列表字典

<reference-data-catalog> <dictionaries> ... <value-list-dictionary name="Greetings" description="My simple value list"> <value>hello</value> <value>hi</value>	<value>greetings</value> <value>godday</value> </value-list-dictionary> ... </dictionaries> </reference-data-catalog>

同义词目录

同义词目录中存储在< synonym-catalogs >元素引用数据部分。两种类型的字典可以添加。

同义词的文本文件目录

<reference-data-catalog> <synonym-catalogs> ... <text-file-synonym-catalog name="textfile_syn" description="My text file synonyms"> <filename>/path/to/synonyms.txt</filename> <encoding>UTF-8</encoding> <case-sensitive>false</case-sensitive> </text-file-synonym-catalog> ... </synonym-catalogs> </reference-data-catalog>

数据存储同义词目录

<reference-data-catalog> <synonym-catalogs> ... <datastore-synonym-catalog name="datastore_syn" description="My datastore synonyms"> <datastore-name>orderdb</datastore-name> <master-term-column-path>CUSTOMERS.CUSTOMERNAME</master-term-column-path> <synonym-column-path>CUSTOMERS.CUSTOMERNUMBER</synonym-column-path> <synonym-column-path>CUSTOMERS.PHONE</synonym-column-path> </datastore-synonym-catalog> ... </synonym-catalogs> </reference-data-catalog>

字符串的模式

字典中存储在<的字符串模式>元素引用数据部分。两种类型的字符串模式可以添加。

正则表达式(regex)字符串模式

<reference-data-catalog> <string-patterns> ... <regex-pattern name="regex danish email" description="Danish email addresses"> <expression>[a-z]+@[a-z]+\.dk</expression> <match-entire-string>true</match-entire-string> </regex-pattern> ... </string-patterns> </reference-data-catalog>

简单的字符串模式

<reference-data-catalog> <string-patterns> ... <simple-pattern name="simple email" description="Simple email pattern"> <expression>aaaa@aaaaa.aa</expression> </simple-pattern> ... </string-patterns> </reference-data-catalog>

任务跑

跑步者的任务定义如何DataCleaner的引擎将执行的任务分析工作。通常你不应该编辑这个元素。然而,这里有两个选择:

<multithreaded-taskrunner max-threads="30" />

定义了一个30多螺纹跑任务的线程池线程可用。小心,虽然30看似大量太小的线程池可能会引起问题,因为一些任务安排额外的任务,因此有死锁的风险当线程数量非常低。

<singlethreaded-taskrunner />

定义一个单线程任务跑。在遗留硬件或操作系统这个设置会更好,但是它不会利用现代建筑的多重线程功能。

存储提供商

存储提供程序是用于存储临时数据使用在执行分析工作。有两种类型的存储:大的集合(单一)价值观和“注释行”,即。行采样或标有一个特定类别将感兴趣的用户检查。

解释存储提供程序配置让我们看看默认的元素:

<storage-provider> <combined> <collections-storage> <berkeley-db/> </collections-storage> <row-annotation-storage> <in-memory max-rows-threshold="1000" max-sets-threshold="200"/> </row-annotation-storage> </combined> </storage-provider>

元素定义了一个存储策略相结合。

集合存储使用berkeley db,嵌入式数据库Oracle。这是推荐的策略集合。

行注释存储在内存中。有1000行200年最大的一个阈值集。这意味着,如果超过1000条记录注释与同一类别额外的记录不会得救(因此用户是不可见的)。而且它只意味着直到200年样本集将被保存。进一步注释不会采样,但仍指标计算。大多数用户场景不需要超过马克斯。1000注释记录进行检查,但如果这是真的必要可以采取不同的策略:

使用MongoDB注释行

如果你有一个地方MongoDB实例,您可以使用此存储为注释行。这就是配置的样子:

<row-annotation-storage> <custom-storage-provider class-name="org.datacleaner.storage.MongoDbStorageProvider"/> </row-annotation-storage>

MongoDB的存储解决方案提供商已经显示出很好的性能指标,但是在安装添加更多的复杂性,这就是为什么它仍然被认为是实验,只有精明的用户。

第十二章。分析工作文件

文摘

工作文件包含的信息DataCleaner工作的执行。通常,这些文件的文件扩展名 .analysis.xml在这个文件,我们将解释这个文件格式,这是基于XML的,说明它与DataCleaner做什么。

工作总是引用项配置,如数据存储、参考数据等等。因此不足以执行工作。但多个作业可以使用相同的配置。有关配置的更多信息,请参阅配置文件一章。

表的内容

XML模式 源节

XML模式

分析相关的工作文件都写在一个XML格式的XML名称空间“http://eobjects.org/analyzerbeans/job/1.0”。

XML-savvy读者,他们更喜欢使用XML schema意识到自己编辑器来编辑XML文件,你可以在这里找到这个名称空间的XML模式:https://github.com/datacleaner/DataCleaner/blob/master/engine/xml-config/src/main/resources/job.xsd .

阅读本章的笔记各个部分的工作文件格式。

源节

源部分工作的文件格式可能是最有趣的一个手动编辑或审核。这里有一个例子源部分:

<source> <data-context ref="orderdb" /> <columns> <column path="PUBLIC.EMPLOYEES.EMPLOYEENUMBER" id="col_0" type="INTEGER" /> <column path="PUBLIC.EMPLOYEES.LASTNAME" id="col_1" type="VARCHAR" /> <column path="PUBLIC.EMPLOYEES.FIRSTNAME" id="col_2" type="VARCHAR" /> <column path="PUBLIC.EMPLOYEES.EXTENSION" id="col_3" type="VARCHAR" /> <column path="PUBLIC.EMPLOYEES.EMAIL" id="col_4" type="VARCHAR" /> <column path="PUBLIC.EMPLOYEES.OFFICECODE" id="col_5" type="VARCHAR" /> <column path="PUBLIC.EMPLOYEES.REPORTSTO" id="col_6" type="INTEGER" /> <column path="PUBLIC.EMPLOYEES.JOBTITLE" id="col_7" type="VARCHAR" /> </columns> <variables> <variable id="employee type" value="Sales Rep" /> </variables> </source>

从这个来源的部分中,我们可以得到这些有趣的事实:

  1. 使用数据存储的工作是叫“orderdb”。这个数据存储是如何配置,工作不知道,因为它是定义在吗 配置可能这份工作可以有多个类似的数据存储,只要他们的名字叫“orderdb”。

  2. 定义的列组成的基础来源查询作业将火。每一列被分配一个人工ID和一个提示提供的数据类型。这些信息能够分离或一列替换为一个新的定义。这意味着如果你花费很长时间建立完美的工作,但要把它应用到一个不同的列,你可能“只是”改变这里的列定义和保留原列ID。

  3. 在这个部分中,我们还看到一些变量来源。这是一个可选的小节,不常见的。变量的属性值可以在运行时用新值替换。看到这一章可参数化的工作的更多信息和示例。

第13章。日志记录

文摘

登录DataCleaner是可配置提供一个XML文件或属性文件。在这一章里,我们探索日志配置以及如何调整日志记录您的需求。

日志配置文件

登录DataCleaner基于Log4j,开放源码Apache日志框架的基础。与log4j您可以配置日志记录非常详细的水平,同时保持一个集中的配置。

有三个方法来配置登录DataCleaner:

  1. 默认的日志配置这个不需要更改标准DataCleaner的分布。日志文件将生成的日志/ datacleaner。日志文件。

  2. 指定您自己的XML日志配置这需要你把一个名为log4j的文件。xml的根目录DataCleaner。

  3. 指定您自己的日志配置属性文件这需要你把一个名为log4j的文件。DataCleaner根目录的属性。

推荐的方式自定义配置DataCleaner日志是使用XML格式。在下面几个部分中,我们将解释这种方法使用的例子。对于Log4j配置更详细的文档,请参考Log4j网站 .

默认的日志配置

这是一个默认的日志配置清单,以XML格式:

<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> <appender name="consoleAppender" class="org.apache.log4j.ConsoleAppender"> <param name="Target" value="System.out"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p %d{HH:mm:ss} %c{1} - %m%n"/> </layout> <filter class="org.apache.log4j.varia.LevelRangeFilter"> <param name="levelMin" value="WARN"/> </filter> </appender> <appender name="fileAppender" class="org.apache.log4j.DailyRollingFileAppender"> <param name="File" value="${user.home}/.datacleaner/log/datacleaner.log"/> <param name="DatePattern" value="'.'yyyy-MM-dd'.log'"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="%-5p %d{HH:mm:ss.SSS} %c{1} - %m%n"/> </layout> </appender> <logger name="org.apache.metamodel"> <level value="info"/> </logger> <logger name="org.datacleaner"> <level value="info"/> </logger> <root> <priority value="warn"/> <appender-ref ref="consoleAppender"/> <appender-ref ref="fileAppender"/> </root> </log4j:configuration>

这个日志配置指定的信息水平作为默认的日志级别。附加(输出)日志消息到控制台(如果可用)和一个文件路径:$ { user.home } .datacleaner /日志/ datacleaner.log

我们建议使用这个默认配置作为模板自定义日志配置。接下来我们将探讨如何修改配置和创建新的日志输出。

修改日志级别

这些是可用的日志记录级别DataCleaner Log4j,按优先级(最高优先级):

  1. 错误
  2. 警告
  3. 信息
  4. 调试
  5. 跟踪

通常下面两个日志级别(调试和跟踪)不习惯除非意想不到的情况下必须由开发人员进行。

修改日志级别可以在全球范围内或以分层的方式:

  1. 如果你改变<优先>元素的价值属性,你改变了全球对日志消息的阈值。

  2. 如果你改变<记录器>元素的水平,你改变日志优先级日志消息属于一个特定的伐木工的层次结构。

选择日志输出

日志消息输出到一个输出,通常是一个文件或控制台。在配置文件中配置在< appender >元素。这里有几个例子替代输出源可以使用。更多的例子和文档,请参考Log4j网站 .

登录一个PostgreSQL数据库:

<appender name="jdbcAppender" class="org.apache.log4j.jdbc.JDBCAppender"> <param name="URL" value="jdbc:postgresql:db"/> <param name="Driver" value="org.postgresql.Driver"/> <param name="User" value="user"/> <param name="Password" value="password"/> <layout class="org.apache.log4j.PatternLayout"> <param name="ConversionPattern" value="INSERT INTO log4j (log_date,log_level,log_location,log_message) VALUES ('%d{yyyy-MM-dd}','%p','%C;%L','%m')"/> </layout> </appender>

第14章。数据库驱动程序

文摘

DataCleaner附带一组标准的数据库驱动程序,使您连接到PostgreSQL等常见的数据库MySQL,Microsoft SQL Server或Oracle。

也经常希望安装其他驱动程序其他数据库品牌。DataCleaner使用JDBC标准来管理数据库驱动程序和连接。在这一章里,我们覆盖安装额外的数据库驱动程序的过程。

安装在DataCleaner桌面数据库驱动程序

在DataCleaner桌面安装数据库驱动程序在运行时应用程序本身。

首先,进入选项菜单:

然后选择“数据库驱动程序”选项卡。在该选项卡中您将看到一个清单你当前安装的数据库驱动程序(我们知道的):

如果你点击“添加数据库驱动程序”按钮,然后选择“本地JAR文件(s)”选项,您将看到这个对话框:

在这个对话框中,选择驱动程序类名称和文件包含数据库驱动程序。如果你不知道这是什么请参考数据库供应商的文档在JDBC数据库驱动程序。

在上面的例子中我们可以看到IBM DB2驱动程序包括安装软件许可以来两个文件也要包括在内。

安装数据库驱动程序在DataCleaner监视器

如果你想安装的数据库驱动程序DataCleaner监视的web应用程序,您应该首先考虑如果你想要安装的驱动程序仅作为单一的web应用程序的一部分,或如果它应该在全球范围内注册在您的web服务器/容器。

  1. 数据库驱动程序安装在容器中:指容器的文档。过程通常是一个简单的驱动程序JAR文件复制到一个文件夹在web容器的工作区。例如,如果您正在使用Apache Tomcat,将驱动程序JAR文件(s)复制到Tomcat的“自由”文件夹。

  2. 安装数据库驱动程序的web应用程序:首先,定位DataCleaner监控。war文件部署和“爆炸”到一个目录中。你会发现在这个目录的web - inf / lib文件夹。数据库驱动程序文件(s)复制到这个目录中。

我们建议安装驱动程序的容器。这使您的web应用程序更容易升级和管理。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值