hadoop - Hadoop/Spark 生态系统内的数据移动

标签 hadoop apache-spark cloudera azure-hdinsight databricks

我有一个基本问题,希望能更好地理解:

背景

假设我有一个巨大的 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 作业能够访问存储帐户中的数据文件。

请参阅此处了解更多信息: https://learn.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-use-blob-storage#using-azure-data-lake-store-with-hdinsight-clusters

请注意,如果您选择拆除 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/

相关文章:

java - 如何在 Scalding 中存储输出

hadoop - 未写入 HDFS 文件的值

sql-server - 将 SQL Server 连接到 "NoSQL"数据库

hadoop - 在 Oozie 日志中获取 E0800

hadoop - 如何在 Oozie 中使用 MapReduceIndexerTool 包含自定义命令?

java - 无法在集群上使用 java 类调用 spark 应用程序

apache-spark - 无法使用pyspark将数据加载到配置单元中

scala - 使用 Spark sc.textFile 读取文件时如何捕获 BlockMissingException?

sockets - 加入流Apache Spark

python - Pyspark 按列分组元素并创建字典