我有一个基本问题,希望能更好地理解:
背景
假设我有一个巨大的 CSV 文件 (50 GB),我希望将其提供给整个数据科学团队进行分析。理想情况下,团队的每个成员都能够用他们选择的语言与数据进行交互,数据不需要频繁移动(考虑到其大小),并且所有人都可以灵活地访问计算资源。
建议的解决方案
Apache Spark 似乎是当前满足上述要求的解决方案的领跑者。 Scala、Python、SQL 和 R 都能够在灵活的计算资源之上(如果利用 DataBricks、Azure、AWS、Cloudera 等云提供商)访问其所在位置的数据。
问题
以 Microsoft Azure/HDInsight 域中的具体示例为例。假设我们要将这个大型 CSV 上传到 Azure Data Lake。如果我们随后利用 HDInsight 中的 Spark 来定义此数据的架构,我们是否需要从数据所在的位置移动/导入数据?
我的理解(可能是错误的)是,一个关键的好处是数据能够以其 native CSV 格式驻留在数据湖中。在其上运行计算不需要移动它。此外,如果我们希望根据需要频繁关闭/启动 Spark 集群,我们只需将它们重新指向存储成本低廉的 CSV 即可。
结论
如果您能够提供有关上述内容的任何确认或有关误解的澄清,我们将不胜感激。 Hadoop/Spark 生态系统继续快速发展,我想确保我对其当前的功能有正确的理解。
最佳答案
简短的回答是肯定的,该文件可以保留在 Azure Data Lake 存储中。您只需将 Data Lake Store 作为附加存储帐户添加到 Spark HDInsight 群集,甚至可以在预配群集时将其设为默认存储帐户。这将使您的所有 Spark 作业能够访问存储帐户中的数据文件。
请注意,如果您选择拆除 HDInsight 群集,并且将 Hive 与 Spark 结合使用来实现架构/表持久性,请确保使用外部数据库来托管元存储。
请参阅此处了解有关外部元存储的更多信息: https://learn.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-provision-linux-clusters#a-nameuse-hiveoozie-metastoreahive-metastore
关于hadoop - Hadoop/Spark 生态系统内的数据移动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43872851/