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)
文档反馈