最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python ETL工具 pyetl

 更新時間:2020年06月07日 09:57:49   作者:麥葉  
pyetl是一個純python開發(fā)的ETL框架, 相比sqoop, datax 之類的ETL工具,pyetl可以對每個字段添加udf函數(shù),使得數(shù)據(jù)轉(zhuǎn)換過程更加靈活,相比專業(yè)ETL工具pyetl更輕量,純python代碼操作,更加符合開發(fā)人員習(xí)慣。這篇文章主要介紹了python ETL工具 pyetl,需要的朋友參考下

pyetl是一個純python開發(fā)的ETL框架, 相比sqoop, datax 之類的ETL工具,pyetl可以對每個字段添加udf函數(shù),使得數(shù)據(jù)轉(zhuǎn)換過程更加靈活,相比專業(yè)ETL工具pyetl更輕量,純python代碼操作,更加符合開發(fā)人員習(xí)慣

安裝

pip3 install pyetl

使用示例

數(shù)據(jù)庫表之間數(shù)據(jù)同步

from pyetl import Task, DatabaseReader, DatabaseWriter
reader = DatabaseReader("sqlite:///db1.sqlite3", table_name="source")
writer = DatabaseWriter("sqlite:///db2.sqlite3", table_name="target")
Task(reader, writer).start()

數(shù)據(jù)庫表到hive表同步

from pyetl import Task, DatabaseReader, HiveWriter2
reader = DatabaseReader("sqlite:///db1.sqlite3", table_name="source")
writer = HiveWriter2("hive://localhost:10000/default", table_name="target")
Task(reader, writer).start()

數(shù)據(jù)庫表同步es

from pyetl import Task, DatabaseReader, ElasticSearchWriter
reader = DatabaseReader("sqlite:///db1.sqlite3", table_name="source")
writer = ElasticSearchWriter(hosts=["localhost"], index_name="tartget")
Task(reader, writer).start()

原始表目標(biāo)表字段名稱不同,需要添加字段映射

添加

# 原始表source包含uuid,full_name字段
reader = DatabaseReader("sqlite:///db.sqlite3", table_name="source")
# 目標(biāo)表target包含id,name字段
writer = DatabaseWriter("sqlite:///db.sqlite3", table_name="target")
# columns配置目標(biāo)表和原始表的字段映射關(guān)系
columns = {"id": "uuid", "name": "full_name"}
Task(reader, writer, columns=columns).start()

字段的udf映射,對字段進(jìn)行規(guī)則校驗、數(shù)據(jù)標(biāo)準(zhǔn)化、數(shù)據(jù)清洗等

# functions配置字段的udf映射,如下id轉(zhuǎn)字符串,name去除前后空格
functions={"id": str, "name": lambda x: x.strip()}
Task(reader, writer, columns=columns, functions=functions).start()

繼承Task類靈活擴(kuò)展ETL任務(wù)

import json
from pyetl import Task, DatabaseReader, DatabaseWriter

class NewTask(Task):
  reader = DatabaseReader("sqlite:///db.sqlite3", table_name="source")
  writer = DatabaseWriter("sqlite:///db.sqlite3", table_name="target")
  
  def get_columns(self):
    """通過函數(shù)的方式生成字段映射配置,使用更靈活"""
    # 以下示例將數(shù)據(jù)庫中的字段映射配置取出后轉(zhuǎn)字典類型返回
    sql = "select columns from task where name='new_task'"
    columns = self.writer.db.read_one(sql)["columns"]
    return json.loads(columns)
   
  def get_functions(self):
    """通過函數(shù)的方式生成字段的udf映射"""
    # 以下示例將每個字段類型都轉(zhuǎn)換為字符串
    return {col: str for col in self.columns}
   
  def apply_function(self, record):
    """數(shù)據(jù)流中對一整條數(shù)據(jù)的udf"""
    record["flag"] = int(record["id"]) % 2
    return record

  def before(self):
    """任務(wù)開始前要執(zhí)行的操作, 如初始化任務(wù)表,創(chuàng)建目標(biāo)表等"""
    sql = "create table destination_table(id int, name varchar(100))"
    self.writer.db.execute(sql)
  
  def after(self):
    """任務(wù)完成后要執(zhí)行的操作,如更新任務(wù)狀態(tài)等"""
    sql = "update task set status='done' where name='new_task'"
    self.writer.db.execute(sql)

NewTask().start()

目前已實現(xiàn)Reader和Writer列表

 

Reader 介紹
DatabaseReader 支持所有關(guān)系型數(shù)據(jù)庫的讀取
FileReader 結(jié)構(gòu)化文本數(shù)據(jù)讀取,如csv文件
ExcelReader Excel表文件讀取

Writer 介紹
DatabaseWriter 支持所有關(guān)系型數(shù)據(jù)庫的寫入
ElasticSearchWriter 批量寫入數(shù)據(jù)到es索引
HiveWriter 批量插入hive表
HiveWriter2 Load data方式導(dǎo)入hive表(推薦)
FileWriter 寫入數(shù)據(jù)到文本文件

項目地址pyetl

總結(jié)

到此這篇關(guān)于python ETL工具 pyetl的文章就介紹到這了,更多相關(guān)python ETL工具 pyetl內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解python的argpare和click模塊小結(jié)

    詳解python的argpare和click模塊小結(jié)

    這篇文章主要介紹了詳解python的argpare和click模塊小結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-03-03
  • python并發(fā)爬蟲實用工具tomorrow實用解析

    python并發(fā)爬蟲實用工具tomorrow實用解析

    這篇文章主要介紹了python并發(fā)爬蟲實用工具tomorrow實用解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-09-09
  • 使用Python設(shè)置Excel單元格數(shù)字的顯示格式

    使用Python設(shè)置Excel單元格數(shù)字的顯示格式

    Python語言可以幫助我們靈活設(shè)置Excel單元格的數(shù)字格式,保證數(shù)據(jù)的一致性與專業(yè)標(biāo)準(zhǔn),本文將介紹如何使用Python對Excel工作表中單元格的數(shù)字格式進(jìn)行設(shè)置,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下
    2024-06-06
  • python實現(xiàn)對圖片進(jìn)行旋轉(zhuǎn),放縮,裁剪的功能

    python實現(xiàn)對圖片進(jìn)行旋轉(zhuǎn),放縮,裁剪的功能

    今天小編就為大家分享一篇python實現(xiàn)對圖片進(jìn)行旋轉(zhuǎn),放縮,裁剪的功能,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • 基于Python詞云分析政府工作報告關(guān)鍵詞

    基于Python詞云分析政府工作報告關(guān)鍵詞

    這篇文章主要介紹了基于Python詞云分析政府工作報告關(guān)鍵詞,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-06-06
  • 使用python實現(xiàn)個性化詞云的方法

    使用python實現(xiàn)個性化詞云的方法

    最近看到可視化的詞云,看到網(wǎng)上也很多這樣的工具,但是都不怎么完美,有些不支持中文,有的中文詞頻統(tǒng)計得莫名其妙、有的不支持自定義形狀、所有的都不能自定義顏色,于是網(wǎng)上找了一下,決定用python繪制詞云
    2017-06-06
  • Python入門之集合的使用教程

    Python入門之集合的使用教程

    在Python中,集合(Set)?是一個無序、不重復(fù)的序列,它不支持索引。本文將通過示例為大家詳細(xì)講講Python中集合是使用,需要的可以參考一下
    2022-09-09
  • 淺談python之自動化運維(Paramiko)

    淺談python之自動化運維(Paramiko)

    這篇文章主要介紹了淺談python之自動化運維(Paramiko),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-01-01
  • python 分離文件名和路徑以及分離文件名和后綴的方法

    python 分離文件名和路徑以及分離文件名和后綴的方法

    今天小編就為大家分享一篇python 分離文件名和路徑以及分離文件名和后綴的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-10-10
  • python生成日歷實例解析

    python生成日歷實例解析

    這篇文章主要介紹了python生成日歷的方法,實用了python自帶的 calendar模塊加以實現(xiàn),需要的朋友可以參考下
    2014-08-08

最新評論

桂平市| 马鞍山市| 昌平区| 承德县| 峨眉山市| 吴川市| 怀仁县| 乐安县| 澳门| 金华市| 平昌县| 景宁| 河曲县| 嘉定区| 南陵县| 南安市| 锡林浩特市| 蒙城县| 开鲁县| 连江县| 葫芦岛市| 双江| 多伦县| 榆中县| 汉川市| 集贤县| 淳化县| 永善县| 犍为县| 富阳市| 专栏| 隆昌县| 安达市| 景泰县| 西盟| 仲巴县| 海原县| 南乐县| 西宁市| 诸城市| 锦屏县|