我在 Azure 机器学习中拥有数据资产。 我想将其转换为 Pyspark 数据框。 在数据资产的“使用”选项卡中,我获得了将其转换为 Pandas 数据框的代码。 然而,这个数据很大(1 Tb+),所以它不适合 Pandas 数据框。
这是我正在使用的代码:
import mltable
from azure.ai.ml import MLClient
from azure.identity import DefaultAzureCredential
ml_client = MLClient.from_config(credential=DefaultAzureCredential())
data_asset = ml_client.data.get("data_asset_name", version="1")
tbl = mltable.load(data_asset.path)
df = tbl.to_pandas_dataframe()
df
功能
to_pandas_dataframe()
将 MLTable 转换为 pandas 数据框。
有什么函数/方式可以将其转换为 pyspark 数据框吗?
您可以将
mltable
数据资产直接传递给Spark作业;无需创建 Spark DataFrame。这是示例代码:
from azure.ai.ml import MLClient, spark, Input, Output
from azure.identity import DefaultAzureCredential
ml_client = MLClient(
DefaultAzureCredential(), subscription_id, resource_group, workspace
)
spark_job = spark(
display_name="Titanic-Spark-Job-SDK-6",
code="./src",
entry={"file": "titanic.py"},
driver_cores=1,
driver_memory="2g",
executor_cores=2,
executor_memory="2g",
executor_instances=2,
resources={
"instance_type": "Standard_E4s_v3",
"runtime_version": "3.2.0",
},
inputs={
"titanic_data": Input(
type="mltable",
path=data_asset.id,
mode="direct"
),
},
outputs={
"wrangled_data": Output(
type="uri_folder",
path="azureml://datastores/workspaceblobstore/paths/data/wrangled/",
mode="direct",
),
},
args="--titanic_data ${{inputs.titanic_data}} --wrangled_data ${{outputs.wrangled_data}}",
)
returned_spark_job = ml_client.jobs.create_or_update(spark_job)
# Wait until the job completes
ml_client.jobs.stream(returned_spark_job.name)
在这里,我将输入类型指定为
mltable
和路径数据资产 id。
输出被写入到wrangled文件夹中。
如果您仍然想创建 pandas 数据框,唯一的方法是在无服务器 Spark 计算中使用 pandas 数据框。
spark.createDataFrame(pandas_dataframe)
请参阅 this github 了解更多信息。