[英]Azure Databrics - Running a Spark Jar from Gen2 DataLake Storage
[英]Can Spark write to Azure Datalake Gen2?
除非使用 Databricks,否则似乎不可能使用 spark 写入 Azure Datalake Gen2。
我正在使用带有almond
jupyter
在本地笔记本中运行 spark。
我已经导入了 hadoop 依赖项:
import $ivy.`org.apache.hadoop:hadoop-azure:2.7.7`
import $ivy.`com.microsoft.azure:azure-storage:8.4.0`
这允许我在尝试将数据帧写入 azure 时使用wasbs://
协议
spark.conf.set(
"fs.azure.sas.[container].prodeumipsadatadump.blob.core.windows.net",
"?sv=2018-03-28&ss=b&srt=sco&sp=rwdlac&se=2019-09-09T23:33:45Z&st=2019-09-09T15:33:45Z&spr=https&sig=[truncated]")
这是错误的来源:
val data = spark.read.json(spark.createDataset(
"""{"name":"Yin", "age": 25.35,"address":{"city":"Columbus","state":"Ohio"}}""" :: Nil))
data
.write
.orc("wasbs://[filesystem]@[datalakegen2storageaccount].blob.core.windows.net/lalalalala")
我们现在收到“分层命名空间帐户尚不支持 Blob API”错误:
org.apache.hadoop.fs.azure.AzureException: com.microsoft.azure.storage.StorageException: Blob API is not yet supported for hierarchical namespace accounts.
那么这真的不可能吗? 我应该放弃 Datalake gen2 并只使用常规 blob 存储吗? 微软确实放弃了创建“数据湖”产品的任务,但没有为带火花的连接器创建文档。
在 spark 中使用 ADLS Gen2 很简单,微软并没有“放弃”,就像“ASF Spark 附带的 hadoop 二进制文件不包括 ABFS 客户端”一样。 HD/Insights、Cloudera CDH6.x 等中的那些。
ADLS Gen2 是 Microsoft 部署的最好的对象存储 - 通过分层命名空间,您可以获得 O(1) 目录操作,这对于 spark 意味着高性能任务和作业提交。 安全性和权限也很棒。
是的,不幸的是,它无法与您拥有的 Spark 发行版配合使用 - 但是 Microsoft 无法将新连接器改装为 2017 年发布的一组工件。您将不得不升级您的依赖关系。
我认为您必须启用预览功能才能将 Blob API 与 Azure DataLake Gen2 一起使用: Data Lake Gen2 Multi-Protocol-Access
我发现的另一件事:需要通过将“blob”交换为“dfs”来更新端点格式。 见这里。 但我不确定这是否有助于解决您的问题。
另一方面,您可以使用 ABFS 驱动程序来访问数据。 这不受官方支持,但您可以从无 hadoop 的 spark 解决方案开始,并安装包含驱动程序的较新的 hadoop 版本。 我认为这可能是一个选项,具体取决于您的情况: 添加 hadoop ABFS 驱动程序以触发分发
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.