Apache spark 如何将Spark结构化流媒体连接到Azure Data Lake Storage Gen2或blob Storage中的blob/文件创建事件

Apache spark 如何将Spark结构化流媒体连接到Azure Data Lake Storage Gen2或blob Storage中的blob/文件创建事件,apache-spark,azure-storage,spark-structured-streaming,azure-hdinsight,azure-data-lake-gen2,Apache Spark,Azure Storage,Spark Structured Streaming,Azure Hdinsight,Azure Data Lake Gen2,我不熟悉Spark结构化流媒体及其概念。正在阅读Azure HDInsight cluster的文档,其中提到结构化流媒体应用程序在HDInsight cluster上运行,并连接到来自..的流媒体数据。。Azure存储或Azure数据湖存储。我正在研究如何开始从存储或ADL中监听新文件创建事件的流式处理。spark确实提供了一个示例,但我正在寻找如何将流与blob/文件创建事件联系起来,以便将文件内容存储在spark作业的队列中。如果有人能在这方面帮助我,那就太好了。很乐意在这方面帮助您,但您

我不熟悉Spark结构化流媒体及其概念。正在阅读Azure HDInsight cluster的文档,其中提到结构化流媒体应用程序在HDInsight cluster上运行,并连接到来自..的流媒体数据。。Azure存储或Azure数据湖存储。我正在研究如何开始从存储或ADL中监听新文件创建事件的流式处理。spark确实提供了一个示例,但我正在寻找如何将流与blob/文件创建事件联系起来,以便将文件内容存储在spark作业的队列中。如果有人能在这方面帮助我,那就太好了。

很乐意在这方面帮助您,但您能更准确地说明要求吗。是的,您可以在Azure HDInsight上运行Spark结构化流媒体作业。基本上,将azure blob存储装载到集群,然后您可以直接读取blob中可用的数据

val df = spark.read.option("multiLine", true).json("PATH OF BLOB")
Azure Data Lake Gen2(ADL2)仅针对Hadoop 3.2发布。开源Spark 2.4.x支持Hadoop 2.7,如果您自己编译它,则支持Hadoop 3.1。Spark 3将支持Hadoop 3.2,但尚未发布(仅预览版)

Databricks提供对ADL2的本地支持


我解决这个问题的方法是使用Hadoop 3.2手动修补和编译Spark 2.4.4,以便能够使用Microsoft提供的ADL2库。

更喜欢获取指针,而不是认为我没有做研究的向下投票。我接触了stack overflow,因为这里有专家,而且没有太多关于如何将blob/azure存储事件连接到spark流的在线文档。谢谢@chaitra k的回复。是的,我也在找。我想了解如何从blob storage/adls gen2中侦听事件。通过说将azure blob存储装载到群集,您的意思是连接到blob并有一个长期运行的作业?感谢您的回复。由于ADLS Gen2是基于blob存储的,因此我假设它应该与连接blob存储相同。底层文件路径也采用与blob存储相同的路径。ADLS Gen2与blob存储不同,需要特定的驱动程序。ADLS Gen2的优点是blob存储不会提供原子目录重命名。Blob存储文件不是按层次结构(例如目录)组织的,而是作为键值对组织的。重命名密钥时,“子密钥”不会被重命名。因此blob存储驱动程序通过重命名所有非原子子键来模拟目录重命名。Spark依赖于原子重命名,通过写入temp dir并将其重命名为移动到最终目的地(实际提交微批次)来保证一次语义。这是有意义的。我还研究了ADLS Gen2的原子重命名功能。如果我使用blob存储,是否有一种解决方法可以绕过上述问题,为blob存储精确地定义一次语义。