程序猿一枚,把梦想揣进口袋的挨踢工作者。主要工作是分布式数据分析(DataFrame并行化框架),以及大规模分布式多维数组计算框架等。
2020年12月
2020年10月
2019年06月
from odps import __version__
print(__version__)
看下pyodps版本?
RSS可以自行解析,然后用我们的表上传接口来上传数据。
文档:http://pyodps.readthedocs.io/zh_CN/latest/base-tables-zh.html#id7
另外,可以加PyODPS答疑群(钉钉)
用PyODPS可以写成这样,mysql那边使用sqlalchemy
import itertools
from sqlalchemy import create_engine, MetaData, Table
from odps.df import DataFrame
DB_CONNECT_STR = 'mysql+mysqldb://root:@localhost/mydb?charset=utf8'
engine = create_engine(DB_CONNECT_STR, echo=True)
conn = engine.connect()
metadata = MetaData(engine)
table = Table('mysql_table', metadata, autoload=True)
df = DataFrame(odps.get_table('my_demo_table', project='my_project'))
selected = df.filter(df.pdate == '')['imei', 'time_in', 'ntotalvote', 'ntotalcurr']
records = []
for i, record in zip(itertools.count(1), selected.execute()):
if i % 100:
conn.execute(conn.insert(), [dict(r) for r in records])
records = []
records.append(record)
if records:
conn.execute(conn.insert(), [dict(r) for r in records])
是因为交互式情况下,print或者repr的时候会执行立即执行的方法。在非交互式环境下需要显式调用立即执行的方法。
所以你可以在IDE里:
print(users.count().execute())
或者可以打开interactive选项,这样在print或者repr的时候也执行计算。
from odps jmport options
options.interactive = True
print(users.count())
有两个方法
1、 SQL写成create table as select *,这样再使用tunnel下载
odps.execute_sql('create table my_tmp_table as select ***')
t = odps.get_table('my_tmp_table')
with t.open_reader() as reader:
for record in reader:
2、 使用instance tunnel,可以用tunnel读取instance执行结果。这个会在0.6版本完成,预计在下周末或者下下周初发布。