我在我的新公司担任数据工程师,致力于构建google cloud platform (GCP)批处理ETL管道。我的团队的数据科学家最近向我传递了一个数据模型(用Python3.6编写的.py文件)。
数据模型有一个主函数,我可以调用它并获得一个数据帧作为输出,我打算将这个数据帧附加到一个bigquery表中。有没有什么办法,我可以只导入这个主函数,并使用apache (数据流)将其集成到管道中,而不必将数据模型重新编码为PTransform?或者,使用云调度程序和云函数来实现我想要的效果会更好吗?
我是一个完全初学者与数据流和阿帕奇光束,所以任何帮助或链接到指南将非常感谢!
发布于 2019-08-22 03:05:10
您可以利用BigQuery's built-in integrations with Pandas,而不是转换为CSV文件并将其加载到BigQuery (这是一个更长且可能更昂贵的过程):
import pandas
df = pandas.DataFrame(
{
'my_string': ['a', 'b', 'c'],
'my_int64': [1, 2, 3],
'my_float64': [4.0, 5.0, 6.0],
}
)
full_table_id = 'my_dataset.new_table'
project_id = 'my-project-id'
df.to_gbq(full_table_id, project_id=project_id)
在管道编排方面,我个人喜欢Apache Airflow,它与Cloud Composer集成得很好。
编辑:查看针对df.to_gbq的扩展docs,以更好地控制如何加载数据帧。
发布于 2019-08-22 02:47:45
如果您有一个数据帧,最简单的方法是使用transform it into CSV,然后将其加载到BigQuery (load job)中
不要忘记添加job_config.write_disposition = 'WRITE_APPEND'
,以便将数据添加到现有表中。看看另一个参数,模式自动检测,CSV分隔符,跳过前导行可以帮助你实现你的加载。
通过调度程序在函数或云运行触发器中执行此操作。它工作得很好!
https://stackoverflow.com/questions/57593062
复制相似问题