因帕拉壳或火花ETL?

时间:2019-02-02 00:59:45

标签: apache-spark hadoop etl impala

我最近开始在Hadoop环境中工作。我需要做一些基本的ETL来填充几个表。目前,我正在使用sqoop和Impala shell命令将数据导入Hadoop,以编写用于转换的SQL查询。

但是这些天我经常听到关于Spark的消息。在我的情况下,用Spark而不是Impala shell编写ETL有什么好处吗?

谢谢 S

2 个答案:

答案 0 :(得分:3)

过去,很多人要么使用A)SQL脚本(例如Impala)和UNIX脚本,要么使用B)ETL工具进行ETL。

但是,问题是1)更多的imo规模和2)基于技术的标准化。

既然使用了Spark,那么为什么不对Spark进行标准化呢?

我经历了这个周期,使用Spark可以很好地完成Kimball DWH处理。这意味着从Informatica之类的付费ETL工具而言,成本更低。但也有社区版本。

一些注意事项:

  • 使用Data Frame Writer等将文件保存为不同的HDFS格式更加容易和直接。
  • 但是类似Informatica的带有分支的映射略有不同。
  • 一旦从外部来源获得数据,Spark的大规模性能就会更好。
  • 文件控制是与UNIX脚本比内部火花容易伊莫,但它是习惯如果火花内完成的情况。
  • 可以省去Sqoop,可以使用Spark的JDBC DF Reader,但是没有理由放弃sqoop,尽管我会使用Confluent Kafka Connect来提高延迟,但是随后我们进入Zen Questions,因为Kafka是更多的实时方面。
  • 我总体上不相信ETL工具的好处。

随着IT部门不断降低成本,Spark是一个不错的选择。但这不是为胆小者准备的,您需要成为一个好的程序员。这是我听到很多人说。

答案 1 :(得分:0)

我还要补充一点,Impala不是ETL工具,它是一个SQL查询引擎,通过它您可以在通过ETL过程清除数据后对非常大的数据集进行SQL查询。

从历史上看,Spark之前将Pig和Hive用于ETL。如果您更喜欢SQL之类的语法,则Hive仍然很重要,并且有许多变体可以提供更好的性能,例如Tez上的Hive和Spark上的Hive,它们用Spark取代了MapReduce。

参考