如何在 HDInsight 上从 Apache Spark 运行 读取 Azure Table 存储数据
How to read Azure Table Storage data from Apache Spark running on HDInsight
是否可以通过 Azure HDInsight 上的 Spark 应用程序 运行 执行此操作?我们正在使用 Scala。
支持 Azure Blob(通过 WASB)。我不明白为什么 Azure Tables 不是。
提前致谢
目前不支持 Azure 表。只有 Azure blob 支持 Hadoop 和 Spark 所需的 HDFS 接口。
您实际上可以从 Spark 中的 Table 存储中读取,这是一个由 Microsoft 人员完成的项目:
您可能不需要所有 Hive 的东西,只需要根级别的 类:
- AzureTableConfiguration.java
- AzureTableInputFormat.java
- AzureTableInputSplit.java
- AzureTablePartitioner.java
- AzureTableRecordReader.java
- 基地AzureTablePartitioner.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 转换为您想要的 Class。
对我有用!
是否可以通过 Azure HDInsight 上的 Spark 应用程序 运行 执行此操作?我们正在使用 Scala。
支持 Azure Blob(通过 WASB)。我不明白为什么 Azure Tables 不是。
提前致谢
目前不支持 Azure 表。只有 Azure blob 支持 Hadoop 和 Spark 所需的 HDFS 接口。
您实际上可以从 Spark 中的 Table 存储中读取,这是一个由 Microsoft 人员完成的项目:
您可能不需要所有 Hive 的东西,只需要根级别的 类:
- AzureTableConfiguration.java
- AzureTableInputFormat.java
- AzureTableInputSplit.java
- AzureTablePartitioner.java
- AzureTableRecordReader.java
- 基地AzureTablePartitioner.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 转换为您想要的 Class。
对我有用!