我正在尝试从ADLS Gen 1存储文件夹中读取数据,并尝试写入ADLS Gen 2。
我有Databricks代码,可以使用spark_excel从ADLS Gen 1读取Excel文件。
spark_df = spark.read.format("com.crealytics.spark.excel").option("dataAddress", "'Sheet1'!B1:C3").option("header", False).load('/mnt/adls/+path')
我需要的是让数据地址索引B1:C3由一个变量指定。类似于:
var_A = 'B1'
var B = 'C3'
spark_df = spark.read.format("com.crealytics.spark.excel").option("dataAddress", "'Sheet1'!var_A:var_B").option("header", False).load('/mnt/adls/+path')
如果这是不可能的,有没有其他方法从ADLS Gen 1将excel文件读入数据帧?
ADLS Gen1是一项折旧的Azure服务。2024年2月29日,Azure Data Lake Storage Gen1将退役。如果您使用Azure Data Lake Storage Gen1,请确保在该日期之前迁移到Azure Data Lake Storage Gen2。要了解如何操作,请参阅使用Azure门户将Azure数据湖存储从Gen1迁移到Gen2。
一旦您将迁移到ADLS Gen2,就可以使用Python panda模块读取Excel文件,然后将panda数据帧转换为spark数据报。
参考下面的代码:
from datetime import datetime
from pyspark.sql.functions import *
from pyspark.sql.types import *
import pandas as pd
# path to your file
filepath = '/dbfs/FileStore/tables/sample.xlsx'
company_pd_df = pd.read_excel(filepath, sheet_name='Company')
companiesSchema = StructType([
StructField("CompanyID", IntegerType(), False),
StructField("CompanyName", StringType(), False),
StructField("Description", StringType(), False)])
companies_spark_df = spark.createDataFrame(company_pd_df, schema=companiesSchema)
为了更好地理解上述代码的输出,请参阅下面的代码片段。
请注意: