Mor*_*rly 2 azure azure-storage apache-spark azure-data-lake
除非您使用 Databricks,否则似乎不可能使用 Spark 写入 Azure Datalake Gen2。
我正在使用jupyterwithalmond在本地笔记本中运行 Spark。
我已经导入了hadoop依赖项:
import $ivy.`org.apache.hadoop:hadoop-azure:2.7.7`
import $ivy.`com.microsoft.azure:azure-storage:8.4.0`
Run Code Online (Sandbox Code Playgroud)
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]")
Run Code Online (Sandbox Code Playgroud)
这就是错误出现的地方:
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")
Run Code Online (Sandbox Code Playgroud)
现在,我们遇到了“分层命名空间帐户尚不支持 Blob API”错误:
org.apache.hadoop.fs.azure.AzureException: com.microsoft.azure.storage.StorageException: Blob API is not yet supported for hierarchical namespace accounts.
Run Code Online (Sandbox Code Playgroud)
那么这确实不可能吗?我是否应该放弃 Datalake gen2 并仅使用常规 blob 存储?微软在创建“数据湖”产品方面确实失败了,但没有为带有 Spark 的连接器创建任何文档。
在 Spark 中使用 ADLS Gen2 非常简单,微软并没有“失败”,就像“ASF Spark 附带的 hadoop 二进制文件不包括 ABFS 客户端”一样。HD/Insights、Cloudera CDH6.x 等中的那些都是如此。
ADLS Gen2 是 Microsoft 部署的最好的对象存储 - 通过分层命名空间,您可以获得 O(1) 目录操作,这对于 Spark 意味着高性能任务和作业提交。安全性和权限也很棒。
是的,不幸的是它不能与您拥有的 Spark 发行版一起使用 - 但 Microsoft 无法为 2017 年发布的一组工件改造新的连接器。您将不得不升级您的依赖关系。
| 归档时间: |
|
| 查看次数: |
5237 次 |
| 最近记录: |