gpt4 book ai didi

etl - 如何使用 Scriptella 对多个文件进行 ETL?

转载 作者:行者123 更新时间:2023-12-02 00:17:41 24 4
gpt4 key购买 nike

我有多个日志文件 1.csv、2.csv 和 3.csv 由日志报告生成。我想读取这些文件并使用 Scriptella 同时解析它们。

最佳答案

Scriptella 不提供开箱即用的并行作业执行。相反,您应该使用操作系统或编程环境提供的作业调度程序(例如,通过将作业提交给 ExecutorService 来运行多个 ETL 文件)。

这里是导入指定为系统属性的单个文件的工作示例:

ETL 文件:

<!DOCTYPE etl SYSTEM "http://scriptella.javaforge.com/dtd/etl.dtd">
<etl>
<connection id="in" driver="csv" url="$input"/>
<connection id="out" driver="text"/>
<query connection-id="in">
<script connection-id="out">
Importing: $1, $2
</script>
</query>
</etl>

并行运行文件的 Java 代码:

//Imports 3 csv files in parallel using a fixed thread pool
public class ParallelCsvTest {
public static void main(String[] args) throws EtlExecutorException, MalformedURLException, InterruptedException {
final ExecutorService service = Executors.newFixedThreadPool(3);
for (int i=1;i<=3;i++) {
//Pass a name as a parameter to ETL file, e.g. input<i>.csv
final Map<String,?> map = Collections.singletonMap("input", "input"+i+".csv");
EtlExecutor executor = EtlExecutor.newExecutor(new File("parallel.csv.etl.xml").toURI().toURL(), map);
service.submit((Callable<ExecutionStatistics>)executor);
}
service.shutdown();
service.awaitTermination(10, TimeUnit.SECONDS);
}
}

运行此示例创建 3 个 csv 文件 input1.csv、input2.csv 和 input3.csv,并将它们放在当前工作目录中。 CSV 文件示例:

Level, Message
INFO,Process 1 started
INFO,Process 1 stopped

关于etl - 如何使用 Scriptella 对多个文件进行 ETL?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12383025/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com