【问题标题】:how we can upload parquet file in azure blob storage using spark and scala?我们如何使用 spark 和 scala 在 azure blob 存储中上传 parquet 文件?
【发布时间】:2022-03-02 22:10:39
【问题描述】:
 val input_blob_path = "Enter input azure blob path here"
    val output_blob_path = "Enter output azure blob path here"
    val storageAccountName = "Enter_Your_Storage_Account_Name"
    val storageKeyValue = "Enter_Your_Storage_Account_Key"
    val containerName = "Enter_Your_containerName"

    val sparkSession = SparkSession.builder()
      .master("local")
      .appName("WriteDataToAzureBlob")
      .config(
        s"fs.azure.account.key.${storageAccountName}.blob.core.windows.net",
        storageKeyValue)
      .getOrCreate()

    parqDF.write.parquet("wasbs://${containerName}@{storageAccountName}.blob.core.windows.net/${output_blob_path}")

我正在使用此代码在 blob 存储中写入,但它现在对我有用。

【问题讨论】:

  • 你能说得更具体些吗? “它对我不起作用”是什么意思?
  • 我使用的代码没有帮助我在 blob 存储中编写 parquet 文件
  • 有什么例外吗?记录?
  • java.lang.ClassNotFoundException: Class org.apache.hadoop.fs.azure.NativeAzureFileSystem 我得到这个异常
  • 我们必须在 build.sbt 中添加的任何依赖项??

标签: scala apache-spark azure-blob-storage


【解决方案1】:

对于错误:

scala 模块 2.13.2 需要 jackson 数据绑定版本 >= 2.12.0 和

  • 尝试删除 Jackson 的旧依赖并升级插件或 新增 2.12.0 系列
  • Azure SDK 使用的所有 Jackson 包,您可能需要固定 他们每个人都有一个特定的版本,他们的版本号设置为 与 Spark 相同。

  • 尝试添加不同的 com.fasterxml.jackson.core 依赖 根据错误的版本,然后您可能需要明确地覆盖它们。

    "com.fasterxml.jackson.module" %% "jackson-module-scala" % "2.12.5"
    

见 1.scala - Jackson conflicts in Apache Spark when used with Azure Java SDK - Stack Overflow

  1. Maven Repository: azure-core-serializer-json-jackson

其他参考资料:

  1. Jackson compatibility issues GitHub
  2. scala -incompatible Jackson versions -SO , Scala module 2.12.3 requires Jackson Databind version 3 -SO
  3. Manage Scala & Java libraries for Apache Spark - Azure Synapse Analytics | Microsoft Docs

【讨论】:

    猜你喜欢
    • 2021-08-31
    • 2019-01-20
    • 2015-06-16
    • 2019-08-13
    • 2019-10-04
    • 2019-06-27
    • 2021-03-05
    • 2017-08-24
    相关资源
    最近更新 更多