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

时间:2017-05-09 14:41:06

标签: hadoop apache-spark cloudera hdinsight databricks

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

背景

假设我有一个巨大的CSV文件(50 GB),我想在数据科学团队中进行分析。理想情况下,团队的每个成员都能够以他们选择的语言与数据交互,数据不需要经常移动(给定其大小),并且所有人都可以灵活地访问计算资源。

提议的解决方案

Apache Spark似乎是目前满足上述要求的解决方案的领跑者。 Scala,Python,SQL和R都能够访问其站点所在的数据(如果利用DataBricks,Azure,AWS,Cloudera等云提供商)灵活的计算资源。

问题

在Microsoft Azure / HDInsight域中获取特定示例。假设我们要将这个大型CSV上传到Azure Data Lake。如果我们然后利用HDInsight中的Spark为这些数据定义架构,我们是否需要从它所在的位置移动/导入数据?

我的理解可能是错误的,一个关键的好处是数据能够以其原生的CSV格式驻留在Data Lake中。在其上运行计算不需要移动它。此外,如果我们希望根据需要经常关闭/启动Spark群集,我们可以简单地将它们重新指向廉价存储的CSV。

结论

您可以提供有关上述内容的任何确认,或有关误解的说明,我们将不胜感激。 Hadoop / Spark生态系统继续快速发展,我想确保我对其当前的功能有正确的理解。

2 个答案:

答案 0 :(得分:1)

简短回答是肯定的,该文件可以保留在Azure Data Lake商店中。您只需将Data Lake Store作为附加存储帐户添加到Spark HDInsight群集,或者甚至在配置群集时将其设为默认存储帐户。这将使您的所有Spark作业都能访问驻留在您的存储帐户中的数据文件。

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

请注意,如果您选择拆除HDInsight群集,并且将Hive与Spark结合使用模式/表持久性,请确保使用外部数据库来托管Metastore。

有关外部亚微分的更多信息,请参见此处: https://docs.microsoft.com/en-us/azure/hdinsight/hdinsight-hadoop-provision-linux-clusters#a-nameuse-hiveoozie-metastoreahive-metastore

答案 1 :(得分:1)

2要点注意事项:

  1. 使用Parquet高效存储:最好以Parquet格式而不是CSV格式存储数据,因为它可以节省大量空间,而Spark with Parquet(由于其柱状格式)会给出由于谓词下推,您的查询性能会更好。您可以使用Parquet将文件压缩高达60%。
  2. 数据位置数据驻留在执行程序计算机上:如果要在Azure上创建集群并在Azure Data Lake上存储数据,那么将会有一些数据从数据湖移动到执行程序,除非数据是执行者的本地人。
  3. 希望它能回答你的问题。