pyodps操作maxCompute

时间:2020-04-28
本文章向大家介绍pyodps操作maxCompute,主要包括pyodps操作maxCompute使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

连接ODPS

from odps import ODPS
odps = ODPS('**your-access-id**', '**your-secret-access-key**', '**
your-default-project**',
endpoint='**your-end-point**')
your-default-project**',
endpoint='**your-end-point**')
这两个可省略,通过get_project命令获取到某个项⽬空间

创建非分区表data_temp:table_name,data_count,time 三个字段
table = odps.create_table('data_temp','table_name string, data_count bigint, time datetime',if_not_exists=True)

 操作表

t = odps.get_table('data_temp')

 插入数据,使用列表的形式

records = [['lrb', 344322, '2020-04-28 14:09:37'],       
           ['zcfzb', 4343434, '2020-04-28 14:09:37'],
           ['xjllb', 21142232, '2020-04-28 14:09:37'],
           ['test', 343242, '2020-04-28 14:09:37']]
odps.write_table('data_temp', records)

读取表中数据

with t.open_reader() as reader:
    count = reader.count
    for record in reader:
        #处理每一条数据

使用dataframe

df = t.to_df()

注:dataframe是maxCompute自己的,不具备pandas的dataframe一些功能(如:to_csv)

可以转成pandas的dataframe

pd_df = df.to_pandas()

打印如下

  table_name  data_count                time
0        lrb      344322 2020-04-28 14:09:37
1      zcfzb     4343434 2020-04-28 14:09:37
2      xjllb    21142232 2020-04-28 14:09:37
3       test      343242 2020-04-28 14:09:37

介于此,我们可以将数据直接导入MYSQL

from sqlalchemy import create_engine
connect = create_engine('mysql+pymysql://root:mysql@172.20.10.12:3306/odps?charset=utf8')
pd_df.to_sql("data_sync", connect, if_exists='append', index=False)

其中data_sync是mysql对应的表名,connect是mysql连接

由于我的Mysql表没有建立主键,所以当代码重复执行后,会写入多次。

需要注意的是:ODPS的表名和MYSQL的表名尽量保持一致,不然会报错。解决办法是导入mysql之前,更改dataframe列名即可。

  

  

  

 

 

原文地址:https://www.cnblogs.com/sealong/p/12794387.html