文档

数据输入输出

更新时间:

MaxFrame支持直连MaxCompute,允许对MaxCompute中的数据进行高效直接读写操作,运行时无需将数据拉取至本地计算,消除了不必要的本地数据传输,提高了执行效率。

MaxCompute表

您可以使用MaxCompute表创建MaxFrame DataFrame对象,并将计算结果存储到另一张MaxCompute表中。

  • 从非分区表test_odps_table中获取数据,通过MaxFrame进行转换并将其存储到另一张分区表test_processed_odps_table中,代码示例如下:

    import maxframe.dataframe as md
    
    df = md.read_odps_table("test_odps_table")
    processed_df = df[df.A > 10]
    processed_df.to_odps_table("test_processed_odps_table")
  • 如果表为分区表,read_odps_table方法会读取所有分区的数据,因此如果存在多个分区,您可以通过partitions参数读取部分的分区数据:

    df = md.read_odps_table(
        "parted_odps_table", partitions=["pt1=20240119,pt2=10", "pt1=20240119,pt2=11"]
    )
  • 默认情况下,创建的DataFrame会生成RangeIndex。您可以使用index_col参数将现有列指定为索引。

    df = md.read_odps_table(
        "parted_odps_table", partitions=["pt1=20240119,pt2=10"], index_col=["idx_col"]
    )
  • 如果需要将预处理的中间数据存储到MaxCompute表中,可以使用to_odps_table方法。

    df.to_odps_table("output_table_name").execute()
  • 可通过index参数控制索引输出的行为。默认情况下输出索引,如果不需要输出索引,可以将index参数指定为False。

    df.to_odps_table("output_table_name", index=False).execute()
  • 数据也可以存储为分区表。您可以指定partition参数作为要写入的分区。

    df.to_odps_table("parted_table", partition="pt=20240121,h=12").execute()
  • 您还可以将列指定为分区列。这些列的数据将动态决定行将写入的分区。

    df.to_odps_table("parted_table", partition_col=["pt_col"]).execute()

Pandas对象

您可以将本地Pandas的DataFrame对象和MaxFrame的DataFrame进行互相转换。

当调用read_pandas方法时,Pandas对象将被上传至MaxCompute并在集群中使用。

md_df = md.read_pandas(pd_df)

在MaxFrame中完成转换后,可以使用to_pandas方法将数据下载到本地。

pd_df = md_df.to_pandas()
  • 本页导读 (1)
文档反馈