Impala shell 还是用于 ETL 的 Spark?

Impala shell or Spark for ETL?

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

但是最近我经常听说 Spark。在我的情况下,用 Spark 而不是 Impala shell 编写 ETL 会有任何优势吗?

谢谢 S

过去许多人使用 A) SQL 脚本(如 Impala)与 UNIX 脚本或使用 B) ETL 工具进行 ETL。

但是,问题是 1) 更大规模 imo 和 2) 技术标准化。

既然都在用Spark,那为什么不在Spark上做一个标准化呢?

我已经经历了这个周期,Kimball DWH 处理可以用 Spark 完成。这意味着像 Informatica 这样的付费 ETL 工具的成本更低。但是有社区版。

注意事项:

  • 使用 Data Frame Writer 等将文件保存为不同的 HDFS 格式更容易、更直接。
  • 但是带有分支的类似 Informatica 的映射有点不同。
  • 一旦从外部来源获取数据,Spark 的大规模性能会更好。
  • 使用 UNIX 脚本比在 Spark imo 中更容易控制文件,但如果在 Spark 中完成,这是一个习惯的情况。
  • Sqoop可以省略,可以使用Spark的JDBCDFReader,但是没有理由不用sqoop,虽然我会用Confluent Kafka Connect来代替,延迟更高,但是然后我们进入 Zen Questions,因为 Kafka 更实时。
  • 总的来说,我不相信 ETL 工具的好处。

随着 IT 需要降低成本,Spark 是一个不错的选择。但这不适合胆小的人,您需要成为一名优秀的程序员。这是我听到很多人说的话。

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

历史上,Pig 和 Hive 在 Spark 之前用于 ETL。如果您更喜欢 SQL 这样的语法,Hive 仍然是相关的,并且有许多变体可以提供更好的性能,例如 Tez 上的 Hive 和 Spark 上的 Hive,后者用 Spark 代替了 MapReduce。

参考资料