我有一个基本问题,我希望能够更好地理解:
背景
假设我有一个巨大的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生态系统继续快速发展,我想确保我对其当前的功能有正确的理解。
答案 0 :(得分:1)
简短回答是肯定的,该文件可以保留在Azure Data Lake商店中。您只需将Data Lake Store作为附加存储帐户添加到Spark HDInsight群集,或者甚至在配置群集时将其设为默认存储帐户。这将使您的所有Spark作业都能访问驻留在您的存储帐户中的数据文件。
请注意,如果您选择拆除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要点注意事项:
希望它能回答你的问题。