【问题标题】:How to read Azure Table Storage data from Apache Spark running on HDInsight如何从在 HDInsight 上运行的 Apache Spark 读取 Azure 表存储数据
【发布时间】:2016-03-07 17:53:00
【问题描述】:

是否可以通过在 Azure HDInsight 上运行的 Spark 应用程序执行此操作?我们正在使用 Scala。

支持 Azure Blob(通过 WASB)。我不明白为什么没有 Azure 表。

提前致谢

【问题讨论】:

    标签: azure apache-spark azure-storage azure-hdinsight


    【解决方案1】:

    您实际上可以从 Spark 中的表存储中读取数据,这是一个由 Microsoft 人员完成的项目:

    https://github.com/mooso/azure-tables-hadoop

    您可能不需要所有 Hive 的东西,只需要根级别的类:

    • AzureTableConfiguration.java
    • AzureTableInputFormat.java
    • AzureTableInputSplit.java
    • AzureTablePartitioner.java
    • AzureTableRecordReader.java
    • BaseAzureTablePartitioner.java
    • DefaultTablePartitioner.java
    • PartitionInputSplit.java
    • WritableEntity.java

    你可以这样阅读:

    import org.apache.hadoop.conf.Configuration
    
    sparkContext.newAPIHadoopRDD(getTableConfig(tableName,account,key),
                                                    classOf[AzureTableInputFormat],
                                                    classOf[Text],
                                                    classOf[WritableEntity])
    
    def getTableConfig(tableName : String, account : String, key : String): Configuration = {
        val configuration = new Configuration()
        configuration.set("azure.table.name", tableName)
        configuration.set("azure.table.account.uri", account)
        configuration.set("azure.table.storage.key", key)
        configuration
      }
    

    您必须编写一个解码函数来将您的 WritableEntity 转换为您想要的类。

    它对我有用!

    【讨论】:

      【解决方案2】:

      目前不支持 Azure 表。只有 Azure Blob 支持 Hadoop 和 Spark 所需的 HDFS 接口。

      【讨论】:

        猜你喜欢
        • 2016-03-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-07-18
        • 2019-08-03
        • 1970-01-01
        相关资源
        最近更新 更多